diff --git a/ecdb/trunk/src/ecdb.c b/ecdb/trunk/src/ecdb.c index b48a3aa..2ddeaf2 100644 --- a/ecdb/trunk/src/ecdb.c +++ b/ecdb/trunk/src/ecdb.c @@ -11,179 +11,179 @@ int ecdb_setup(); int main(int argc, char **argv) { - int ret = 0; + int ret = 0; - /* Do I really need all of these? */ - if (!ecore_init()) - { - printf("Cannot initialize Ecore!\n"); - return 1; - } - - if (!ecore_string_init()) - { - printf("Cannot initialize Ecore_String!\n"); - ret = 1; - goto SHUTDOWN; - } + /* Do I really need all of these? */ + if (!ecore_init()) + { + printf("Cannot initialize Ecore!\n"); + return 1; + } + + if (!ecore_string_init()) + { + printf("Cannot initialize Ecore_String!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecore_file_init()) - { - printf("Cannot initialize Ecore_File!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecore_file_init()) + { + printf("Cannot initialize Ecore_File!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecore_evas_init()) - { - printf("Cannot initialize Ecore_Evas!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecore_evas_init()) + { + printf("Cannot initialize Ecore_Evas!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!edje_init()) - { - printf("Cannot initialize Edje!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!edje_init()) + { + printf("Cannot initialize Edje!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!efreet_init()) - { - printf("Cannot initialize Efreet!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!efreet_init()) + { + printf("Cannot initialize Efreet!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ewl_init(&argc, argv)) - { - printf("Connot initialize Ewl!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ewl_init(&argc, argv)) + { + printf("Connot initialize Ewl!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecdb_image_init()) - { - printf("Cannot initialize libisofs!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecdb_image_init()) + { + printf("Cannot initialize libisofs!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecdb_burn_init()) - { - printf("Cannot initialize libburn!\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecdb_burn_init()) + { + printf("Cannot initialize libburn!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecdb_setup()) - { - printf("Setup failed\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecdb_setup()) + { + printf("Setup failed\n"); + ret = 1; + goto SHUTDOWN; + } - ecdb_print_drive_info(); - - if (!ecdb_create_main_gui()) - { - printf("Cannot create main window\n"); - ret = 1; - goto SHUTDOWN; - } + ecdb_print_drive_info(); + + if (!ecdb_create_main_gui()) + { + printf("Cannot create main window\n"); + ret = 1; + goto SHUTDOWN; + } - /* + /* - Ecdb_Audio_Project *proj; - Ecdb_Source *src; - proj = ecdb_audio_project_new(); + Ecdb_Audio_Project *proj; + Ecdb_Source *src; + proj = ecdb_audio_project_new(); - i = 1; - while ((i < argc) && (argv)) - { - if (ecore_file_exists(argv[i])) - { - if (!ecore_file_is_dir(argv[i])) - { - src = ecdb_source_new(); - ecdb_source_data_set(src, argv[i], 0); - ecdb_source_child_append(proj->tracks, src); - } - } - i++; - } + i = 1; + while ((i < argc) && (argv)) + { + if (ecore_file_exists(argv[i])) + { + if (!ecore_file_is_dir(argv[i])) + { + src = ecdb_source_new(); + ecdb_source_data_set(src, argv[i], 0); + ecdb_source_child_append(proj->tracks, src); + } + } + i++; + } - ecdb_audio_project_start(proj); + ecdb_audio_project_start(proj); - proj->publisher_id = proj->data_preparer_id = proj->system_id = - proj->application_id = proj->copywrite_id = - proj->abstract_id = proj->biblio_id = strdup("ecdb"); - - if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) - { - printf("Couldn't grab drive!\n"); - ret = 1; - goto SHUTDOWN; - } + proj->publisher_id = proj->data_preparer_id = proj->system_id = + proj->application_id = proj->copywrite_id = + proj->abstract_id = proj->biblio_id = strdup("ecdb"); + + if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) + { + printf("Couldn't grab drive!\n"); + ret = 1; + goto SHUTDOWN; + } - if (!ecdb_burn_project(proj)) - { - printf("Burn was unsuccessful\n"); - ret = 1; - goto SHUTDOWN; - } + if (!ecdb_burn_project(proj)) + { + printf("Burn was unsuccessful\n"); + ret = 1; + goto SHUTDOWN; + } - */ + */ - ewl_main(); + ewl_main(); - /* End testing */ + /* End testing */ SHUTDOWN: - burn_finish(); - iso_finish(); - ewl_shutdown(); - ecore_file_shutdown(); - ecore_string_shutdown(); - ecore_evas_shutdown(); - ecore_shutdown(); - edje_shutdown(); - efreet_shutdown(); + burn_finish(); + iso_finish(); + ewl_shutdown(); + ecore_file_shutdown(); + ecore_string_shutdown(); + ecore_evas_shutdown(); + ecore_shutdown(); + edje_shutdown(); + efreet_shutdown(); - printf("Program Done\n"); - return ret; + printf("Program Done\n"); + return ret; }; int ecdb_setup(void) { - em = NULL; - em = calloc(1, sizeof(Ecdb_Main)); - em->drives = NULL; - em->drop_object = NULL; - em->dnd_candidates = ecore_list_new(); + em = NULL; + em = calloc(1, sizeof(Ecdb_Main)); + em->drives = NULL; + em->drop_object = NULL; + em->dnd_candidates = ecore_list_new(); - if (!ecore_file_mkdir("/tmp/ecdb")) - printf("Creation of temporary directory failed!\n"); + if (!ecore_file_mkdir("/tmp/ecdb")) + { + printf("Creation of temporary directory failed!\n"); + } - ECDB_DRIVE_ACTION_FINISHED = ecore_event_type_new(); - ECDB_DRIVE_ACTION_BEGUN = ecore_event_type_new(); - ECDB_DRIVE_ACTION_UPDATE = ecore_event_type_new(); + ECDB_DRIVE_ACTION_FINISHED = ecore_event_type_new(); + ECDB_DRIVE_ACTION_BEGUN = ecore_event_type_new(); + ECDB_DRIVE_ACTION_UPDATE = ecore_event_type_new(); - ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, ecdb_shutdown, - NULL); - ecore_event_handler_add(ECORE_X_EVENT_XDND_POSITION, ecdb_dnd_position, - em); - ecore_event_handler_add(ECORE_X_EVENT_XDND_DROP, ecdb_dnd_drop, em); - ecore_event_handler_add(ECORE_X_EVENT_SELECTION_NOTIFY, - ecdb_dnd_selection, em); + ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, ecdb_shutdown, NULL); + ecore_event_handler_add(ECORE_X_EVENT_XDND_POSITION, ecdb_dnd_position, em); + ecore_event_handler_add(ECORE_X_EVENT_XDND_DROP, ecdb_dnd_drop, em); + ecore_event_handler_add(ECORE_X_EVENT_SELECTION_NOTIFY, ecdb_dnd_selection, + em); - if (!ecdb_aquire_drive_info()) - { - printf("Aquiring drives failed!\n"); - return FALSE; - } - - return TRUE; + if (!ecdb_aquire_drive_info()) + { + printf("Aquiring drives failed!\n"); + return FALSE; + } + + return TRUE; } diff --git a/ecdb/trunk/src/ecdb.h b/ecdb/trunk/src/ecdb.h index 2fc742d..c99d42b 100644 --- a/ecdb/trunk/src/ecdb.h +++ b/ecdb/trunk/src/ecdb.h @@ -30,7 +30,7 @@ #undef FREE #define FREE(dat) \ { \ - if (dat) { free(dat); dat = NULL; } \ + if (dat) { free(dat); dat = NULL; } \ } #undef __UNUSED__ @@ -40,11 +40,11 @@ typedef struct _Ecdb_Main Ecdb_Main; struct _Ecdb_Main { - char theme_path[PATH_MAX]; - Ecore_Evas *main_win_ee; - Ecore_List *drives; - Ecore_List *dnd_candidates; - Evas_Object *drop_object; + char theme_path[PATH_MAX]; + Ecore_Evas *main_win_ee; + Ecore_List *drives; + Ecore_List *dnd_candidates; + Evas_Object *drop_object; }; extern Ecdb_Main *em; diff --git a/ecdb/trunk/src/ecdb_audio.c b/ecdb/trunk/src/ecdb_audio.c index 14e13e8..f99daa9 100644 --- a/ecdb/trunk/src/ecdb_audio.c +++ b/ecdb/trunk/src/ecdb_audio.c @@ -6,94 +6,98 @@ int ecdb_audio_project_init(Ecdb_Audio_Project *proj); Ecdb_Audio_Project * ecdb_audio_project_new(void) { - Ecdb_Audio_Project *proj; + Ecdb_Audio_Project *proj; - proj = calloc(1, sizeof(Ecdb_Audio_Project)); - if (!proj) - return NULL; - if (!ecdb_audio_project_init(proj)) - { - FREE(proj); - return NULL; - } + proj = calloc(1, sizeof(Ecdb_Audio_Project)); + if (!proj) + { + return NULL; + } + if (!ecdb_audio_project_init(proj)) + { + FREE(proj); + return NULL; + } - return proj; + return proj; } int ecdb_audio_project_init(Ecdb_Audio_Project *proj) { - if (!ecdb_project_init(ECDB_PROJECT(proj))) - return FALSE; + if (!ecdb_project_init(ECDB_PROJECT(proj))) + { + return FALSE; + } - ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_AUDIO_PROJECT); - proj->tracks = ecdb_source_new(); - proj->num_tracks = 0; - proj->num_transcode_complete = 0; + ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_AUDIO_PROJECT); + proj->tracks = ecdb_source_new(); + proj->num_tracks = 0; + proj->num_transcode_complete = 0; - return TRUE; + return TRUE; } void ecdb_audio_project_destroy(Ecdb_Audio_Project *proj) { - ecdb_source_destroy(proj->tracks); - ecdb_project_destroy(ECDB_PROJECT(proj)); - free(proj); + ecdb_source_destroy(proj->tracks); + ecdb_project_destroy(ECDB_PROJECT(proj)); + free(proj); } void ecdb_audio_project_start(Ecdb_Audio_Project *proj) { - char cmd[PATH_MAX]; //<-- + 20ish? - int i; + char cmd[PATH_MAX]; //<-- + 20ish? + int i; - /* Fork off the gstreamer program for every file to be added - * Depending on the number of files, this can be pretty system intensive, so - * is there a way to reduce/control this ? - */ - for (i = 0; proj->tracks->children[i]; i++) - { - snprintf(cmd, PATH_MAX, "ecdb_transcode_helper %s", - proj->tracks->children[i]->dst); - ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_READ_LINE_BUFFERED, NULL); - } - - proj->num_tracks = i + 1; - ecore_event_handler_add(ECORE_EXE_EVENT_DATA, transcode_data_cb, proj); + /* Fork off the gstreamer program for every file to be added + * Depending on the number of files, this can be pretty system intensive, so + * is there a way to reduce/control this ? + */ + for (i = 0; proj->tracks->children[i]; i++) + { + snprintf(cmd, PATH_MAX, "ecdb_transcode_helper %s", + proj->tracks->children[i]->dst); + ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ | + ECORE_EXE_PIPE_READ_LINE_BUFFERED, NULL); + } + + proj->num_tracks = i + 1; + ecore_event_handler_add(ECORE_EXE_EVENT_DATA, transcode_data_cb, proj); } int transcode_data_cb(void *data, int type, void *event) { - const char *rec; - Ecore_Exe_Event_Data *ev = event; - Ecdb_Audio_Project *proj = data; + const char *rec; + Ecore_Exe_Event_Data *ev = event; + Ecdb_Audio_Project *proj = data; - rec = ev->data; - proj->num_transcode_complete++; + rec = ev->data; + proj->num_transcode_complete++; - printf("Message: %s\n", rec); + printf("Message: %s\n", rec); - if (!strcmp(rec, "EOS")) - { - printf("Transcode complete\n"); - proj->num_transcode_complete++; - } + if (!strcmp(rec, "EOS")) + { + printf("Transcode complete\n"); + proj->num_transcode_complete++; + } + else + { + printf("Error!\n"); // How to handle these? + } - /* How to handle errors? */ - else - printf("Error!\n"); + if (proj->num_tracks == proj->num_transcode_complete) + { + printf("Hurrah, transcoding is done!\n"); + + /* Change to another event later */ + ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, NULL, NULL, NULL); + } - if (proj->num_tracks == proj->num_transcode_complete) - { - printf("Hurrah, transcoding is done!\n"); - - /* Change to another event later */ - ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, NULL, NULL, NULL); - } - - return 1; + return 1; } diff --git a/ecdb/trunk/src/ecdb_audio.h b/ecdb/trunk/src/ecdb_audio.h index 359c1a0..aff0e9e 100644 --- a/ecdb/trunk/src/ecdb_audio.h +++ b/ecdb/trunk/src/ecdb_audio.h @@ -1,8 +1,8 @@ #ifndef ECDB_AUDIO_H #define ECDB_AUDIO_H -Ecdb_Audio_Project *ecdb_audio_project_new(void); -void ecdb_audio_project_start(Ecdb_Audio_Project *proj); -void ecdb_audio_project_destroy(Ecdb_Audio_Project *proj); +Ecdb_Audio_Project *ecdb_audio_project_new(void); +void ecdb_audio_project_start(Ecdb_Audio_Project *proj); +void ecdb_audio_project_destroy(Ecdb_Audio_Project *proj); #endif diff --git a/ecdb/trunk/src/ecdb_burn.c b/ecdb/trunk/src/ecdb_burn.c index d25bcec..25b280d 100644 --- a/ecdb/trunk/src/ecdb_burn.c +++ b/ecdb/trunk/src/ecdb_burn.c @@ -3,18 +3,18 @@ typedef struct Burn_Data Burn_Data; struct Burn_Data { - BurnDisc *disc; - BurnSession *session; - Ecore_List *sources; - Ecore_List *tracks; - Ecdb_Project *proj; + BurnDisc *disc; + BurnSession *session; + Ecore_List *sources; + Ecore_List *tracks; + Ecdb_Project *proj; }; int ecdb_burn_finished(void *data, int type, void *event); int ecdb_burn_project_init(Ecdb_Burn_Project *proj); int ecdb_erase_project_init(Ecdb_Erase_Project *proj); static void ecdb_burn_progress_handler(void *data, void *buffer, - unsigned int nbyte); + unsigned int nbyte); void ecdb_sources_list_free(void *data); void ecdb_tracks_list_free(void *data); @@ -22,278 +22,282 @@ void ecdb_tracks_list_free(void *data); Ecdb_Burn_Project * ecdb_burn_project_new(void) { - Ecdb_Burn_Project *proj; + Ecdb_Burn_Project *proj; - proj = calloc(1, sizeof(Ecdb_Burn_Project)); - if (!proj) - return NULL; - if (!ecdb_burn_project_init(proj)) - { - FREE(proj); - return NULL; - } + proj = calloc(1, sizeof(Ecdb_Burn_Project)); + if (!proj) + return NULL; + if (!ecdb_burn_project_init(proj)) + { + FREE(proj); + return NULL; + } - return proj; + return proj; } int ecdb_burn_project_init(Ecdb_Burn_Project *proj) { - if (!ecdb_project_init(ECDB_PROJECT(proj))) - return FALSE; + if (!ecdb_project_init(ECDB_PROJECT(proj))) + return FALSE; - /* Create some sane defaults */ - ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_BURN_PROJECT); - proj->burn_mode = BURN_MODE1; - proj->fifo_chunksize = 2048; - proj->fifo_chunks = 2048; - proj->underrun_proof = TRUE; - proj->opc = TRUE; - proj->multi = TRUE; - proj->files = ecdb_source_new(); + /* Create some sane defaults */ + ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_BURN_PROJECT); + proj->burn_mode = BURN_MODE1; + proj->fifo_chunksize = 2048; + proj->fifo_chunks = 2048; + proj->underrun_proof = TRUE; + proj->opc = TRUE; + proj->multi = TRUE; + proj->files = ecdb_source_new(); - return TRUE; + return TRUE; } void ecdb_burn_project_destroy(Ecdb_Burn_Project *proj) { - ecdb_source_destroy(proj->files); - FREE(proj->volume_id); - FREE(proj->publisher_id); - FREE(proj->data_preparer_id); - FREE(proj->system_id); - FREE(proj->application_id); - FREE(proj->copywrite_id); - FREE(proj->abstract_id); - FREE(proj->biblio_id); - ecdb_project_destroy(ECDB_PROJECT(proj)); - FREE(proj); + ecdb_source_destroy(proj->files); + FREE(proj->volume_id); + FREE(proj->publisher_id); + FREE(proj->data_preparer_id); + FREE(proj->system_id); + FREE(proj->application_id); + FREE(proj->copywrite_id); + FREE(proj->abstract_id); + FREE(proj->biblio_id); + ecdb_project_destroy(ECDB_PROJECT(proj)); + FREE(proj); } int ecdb_burn_project(Ecdb_Burn_Project *proj) { - char reasons[BURN_REASONS_LEN]; - int padding, i; - Burn_Data *data; - BurnTrack *track; - BurnSource *source; - BurnWriteOpts *opts; - pthread_t progress_update; + char reasons[BURN_REASONS_LEN]; + int padding, i; + Burn_Data *data; + BurnTrack *track; + BurnSource *source; + BurnWriteOpts *opts; + pthread_t progress_update; - i = 0; - data = calloc(1, sizeof(Burn_Data)); - if (!data) - { - printf("Error: Cannot create burn data structure!\n"); - return FALSE; - } - data->proj = ECDB_PROJECT(proj); - data->sources = ecore_list_new(); - data->tracks = ecore_list_new(); - ecore_list_free_cb_set(data->sources, ecdb_sources_list_free); - ecore_list_free_cb_set(data->tracks, ecdb_tracks_list_free); + i = 0; + data = calloc(1, sizeof(Burn_Data)); + if (!data) + { + printf("Error: Cannot create burn data structure!\n"); + return FALSE; + } + data->proj = ECDB_PROJECT(proj); + data->sources = ecore_list_new(); + data->tracks = ecore_list_new(); + ecore_list_free_cb_set(data->sources, ecdb_sources_list_free); + ecore_list_free_cb_set(data->tracks, ecdb_tracks_list_free); - if (proj->burn_mode != BURN_AUDIO) - padding = 300*1024; + if (proj->burn_mode != BURN_AUDIO) + padding = 300*1024; - data->disc = burn_disc_create(); - data->session = burn_session_create(); - burn_disc_add_session(data->disc, data->session, BURN_POS_END); + data->disc = burn_disc_create(); + data->session = burn_session_create(); + burn_disc_add_session(data->disc, data->session, BURN_POS_END); - track = burn_track_create(); - burn_track_define_data(track, 0, padding, 1, proj->burn_mode); + track = burn_track_create(); + burn_track_define_data(track, 0, padding, 1, proj->burn_mode); - source = ecdb_image_project(proj); - if (!source) - { - printf("Failed to add any files to burn disc!\n"); - burn_session_free(data->session); - burn_disc_free(data->disc); - ecore_list_destroy(data->sources); - ecore_list_destroy(data->tracks); - FREE(data); - return ECDB_ERROR_IMAGE_CREATE; - } + source = ecdb_image_project(proj); + if (!source) + { + printf("Failed to add any files to burn disc!\n"); + burn_session_free(data->session); + burn_disc_free(data->disc); + ecore_list_destroy(data->sources); + ecore_list_destroy(data->tracks); + FREE(data); + return ECDB_ERROR_IMAGE_CREATE; + } - if (burn_track_set_source(track, source) != BURN_SOURCE_OK) - { - printf("Error: Cannot attach source object to track " - "object!\n"); - burn_session_free(data->session); - burn_disc_free(data->disc); - ecore_list_destroy(data->sources); - ecore_list_destroy(data->tracks); - FREE(data); - return ECDB_ERROR_SOURCE_ATTACH; - } + if (burn_track_set_source(track, source) != BURN_SOURCE_OK) + { + printf("Error: Cannot attach source object to track object!\n"); + burn_session_free(data->session); + burn_disc_free(data->disc); + ecore_list_destroy(data->sources); + ecore_list_destroy(data->tracks); + FREE(data); + return ECDB_ERROR_SOURCE_ATTACH; + } - burn_session_add_track(data->session, track, BURN_POS_END); - ecore_list_append(data->sources, source); - ecore_list_append(data->tracks, track); + burn_session_add_track(data->session, track, BURN_POS_END); + ecore_list_append(data->sources, source); + ecore_list_append(data->tracks, track); - opts = burn_write_opts_new(ECDB_PROJECT(proj)->drive-> - tangible[0].drive); - burn_write_opts_set_perform_opc(opts, proj->opc); - burn_write_opts_set_multi(opts, proj->multi); - if (proj->simulate) - printf("Simulating Burn!\n"); - burn_write_opts_set_simulate(opts, proj->simulate); - burn_drive_set_speed(ECDB_PROJECT(proj)->drive->tangible->drive, 0, - proj->speed); - burn_write_opts_set_underrun_proof(opts, proj->underrun_proof); + opts = burn_write_opts_new(ECDB_PROJECT(proj)->drive->tangible[0].drive); + burn_write_opts_set_perform_opc(opts, proj->opc); + burn_write_opts_set_multi(opts, proj->multi); + if (proj->simulate) + { + printf("Simulating Burn!\n"); + } + burn_write_opts_set_simulate(opts, proj->simulate); + burn_drive_set_speed(ECDB_PROJECT(proj)->drive->tangible->drive, 0, + proj->speed); + burn_write_opts_set_underrun_proof(opts, proj->underrun_proof); - printf("Searching for burn mode\n"); - if (burn_write_opts_auto_write_type(opts, data->disc, reasons, 0) - == BURN_WRITE_NONE) - { - printf("Error: Failed to find a suitable write mode for " - "disc!\n"); - burn_session_free(data->session); - burn_disc_free(data->disc); - burn_write_opts_free(opts); - ecore_list_destroy(data->sources); - ecore_list_destroy(data->tracks); - FREE(proj); - return ECDB_ERROR_WRITE_MODE; - } + printf("Searching for burn mode\n"); + if (burn_write_opts_auto_write_type(opts, data->disc, reasons, 0) + == BURN_WRITE_NONE) + { + printf("Error: Failed to find a suitable write mode for disc!\n"); + burn_session_free(data->session); + burn_disc_free(data->disc); + burn_write_opts_free(opts); + ecore_list_destroy(data->sources); + ecore_list_destroy(data->tracks); + FREE(proj); + return ECDB_ERROR_WRITE_MODE; + } - burn_disc_write(opts, data->disc); - burn_write_opts_free(opts); + burn_disc_write(opts, data->disc); + burn_write_opts_free(opts); - printf("Disc now burning\n"); - ECDB_PROJECT(proj)->pipe = ecore_pipe_add(ecdb_burn_progress_handler, - NULL); - pthread_create(&progress_update, NULL, ecdb_drive_progress_update, - proj); - pthread_detach(progress_update); - ECDB_PROJECT(proj)->ev_handler = ecore_event_handler_add - (ECDB_DRIVE_ACTION_FINISHED, ecdb_burn_finished, - data); + printf("Disc now burning\n"); + ECDB_PROJECT(proj)->pipe = ecore_pipe_add(ecdb_burn_progress_handler, NULL); + pthread_create(&progress_update, NULL, ecdb_drive_progress_update, proj); + pthread_detach(progress_update); + ECDB_PROJECT(proj)->ev_handler = ecore_event_handler_add + (ECDB_DRIVE_ACTION_FINISHED, ecdb_burn_finished, data); - return ECDB_ERROR_NONE; + return ECDB_ERROR_NONE; } /* This function is pretty naive... Should probably update it at some time */ void * ecdb_drive_progress_update(void *data) { - const Ecdb_Project *proj; - BurnProgress p; - struct burn_drive *drive; + const Ecdb_Project *proj; + BurnProgress p; + struct burn_drive *drive; - proj = data; + proj = data; - if (!proj->drive->tangible) - { - printf("No tangible drive!\n"); - ecore_pipe_del(proj->pipe); - /* Call failure here */ - pthread_exit(NULL); - } - drive = proj->drive->tangible[0].drive; + if (!proj->drive->tangible) + { + printf("No tangible drive!\n"); + ecore_pipe_del(proj->pipe); + pthread_exit(NULL); + } + drive = proj->drive->tangible[0].drive; - printf("Progress update active\n"); - while (burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING) - usleep(100000); + printf("Progress update active\n"); + while (burn_drive_get_status(drive, NULL) == BURN_DRIVE_SPAWNING) + { + usleep(100000); + } - while (burn_drive_get_status(drive, &p) != BURN_DRIVE_IDLE) - { - if (p.sectors > 0) - ecore_pipe_write(proj->pipe, &p, sizeof(p)); - usleep(100000); - } + while (burn_drive_get_status(drive, &p) != BURN_DRIVE_IDLE) + { + if (p.sectors > 0) + { + ecore_pipe_write(proj->pipe, &p, sizeof(p)); + } + usleep(100000); + } - ecore_pipe_write(proj->pipe, "AC", sizeof("AC")); - ecore_pipe_del(proj->pipe); - /* Call the finished event handler here */ - pthread_exit(NULL); + ecore_pipe_write(proj->pipe, "AC", sizeof("AC")); + ecore_pipe_del(proj->pipe); + /* Call the finished event handler here */ + pthread_exit(NULL); } static void ecdb_burn_progress_handler(void *data, void *buffer, unsigned int nbyte) { - BurnProgress *p; - Evas_Object *swallow; - char buf[1024]; - static int last_sector = 0; + BurnProgress *p; + Evas_Object *swallow; + char buf[1024]; + static int last_sector = 0; - if ((nbyte != sizeof(BurnProgress)) || (!strcmp((char *)buffer, "AC"))) - { - ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL); - last_sector = 0; - return; - } - else - { - p = buffer; - } + if ((nbyte != sizeof(BurnProgress)) || (!strcmp((char *)buffer, "AC"))) + { + ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL); + last_sector = 0; + return; + } + else + { + p = buffer; + } - /* Libburn reports p->sector as being 0 right at the end of the job, - * so store the last sector and use that to determine the proper - * percentage/sector to set - */ - if (last_sector <= p->sector) - last_sector = p->sector; - else - last_sector = p->sectors; + /* Libburn reports p->sector as being 0 right at the end of the job, + * so store the last sector and use that to determine the proper + * percentage/sector to set + */ + if (last_sector <= p->sector) + { + last_sector = p->sector; + } + else + { + last_sector = p->sectors; + } - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "burn_image_page"); - snprintf(buf, sizeof(buf), "%d/%d", last_sector, p->sectors); - edje_object_part_text_set(swallow, "progress_text", buf); - snprintf(buf, sizeof(buf), "%d%%", (int)((double)(last_sector + 1) / - (double)p->sectors * 100.0)); - edje_object_part_text_set(swallow, "progress_percent", buf); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "burn_image_page"); + snprintf(buf, sizeof(buf), "%d/%d", last_sector, p->sectors); + edje_object_part_text_set(swallow, "progress_text", buf); + snprintf(buf, sizeof(buf), "%d%%", (int)((double)(last_sector + 1) / + (double)p->sectors * 100.0)); + edje_object_part_text_set(swallow, "progress_percent", buf); } int ecdb_burn_finished(void *data, int type, void *event) { - Burn_Data *proj; + Burn_Data *proj; - proj = data; + proj = data; - printf("Freeing source and tracks\n"); - ecore_list_destroy(proj->sources); - ecore_list_destroy(proj->tracks); + printf("Freeing source and tracks\n"); + ecore_list_destroy(proj->sources); + ecore_list_destroy(proj->tracks); - printf("Freeing session and disc\n"); - burn_session_free(proj->session); - burn_disc_free(proj->disc); + printf("Freeing session and disc\n"); + burn_session_free(proj->session); + burn_disc_free(proj->disc); - printf("Releasing drive\n"); - burn_drive_release(proj->proj->drive->tangible[0].drive, 1); - burn_drive_info_free(proj->proj->drive->tangible); - printf("Burn Complete\n"); + printf("Releasing drive\n"); + burn_drive_release(proj->proj->drive->tangible[0].drive, 1); + burn_drive_info_free(proj->proj->drive->tangible); + printf("Burn Complete\n"); - ecore_event_handler_del(proj->proj->ev_handler); + ecore_event_handler_del(proj->proj->ev_handler); - switch (proj->proj->type) - { - case ECDB_AUDIO_PROJECT: - ecdb_audio_project_destroy(ECDB_AUDIO(proj->proj)); - break; - default: - ecdb_burn_project_destroy(ECDB_BURN(proj->proj)); - } - FREE(proj); + switch (proj->proj->type) + { + case ECDB_AUDIO_PROJECT: + ecdb_audio_project_destroy(ECDB_AUDIO(proj->proj)); + break; - ecdb_gui_burn_image_cleanup(); + default: + ecdb_burn_project_destroy(ECDB_BURN(proj->proj)); + } + FREE(proj); - return TRUE; + ecdb_gui_burn_image_cleanup(); + + return TRUE; } void ecdb_sources_list_free(void *data) { - burn_source_free(data); + burn_source_free(data); } void ecdb_tracks_list_free(void *data) { - burn_track_free(data); + burn_track_free(data); } diff --git a/ecdb/trunk/src/ecdb_burn.h b/ecdb/trunk/src/ecdb_burn.h index f6239e9..1bac2ba 100644 --- a/ecdb/trunk/src/ecdb_burn.h +++ b/ecdb/trunk/src/ecdb_burn.h @@ -1,9 +1,9 @@ #ifndef ECDB_BURN_H #define ECDB_BURN_H -int ecdb_burn_project(Ecdb_Burn_Project *proj); -Ecdb_Burn_Project *ecdb_burn_project_new(void); -void ecdb_burn_project_destroy(Ecdb_Burn_Project *proj); -void *ecdb_drive_progress_update(void *data); +int ecdb_burn_project(Ecdb_Burn_Project *proj); +Ecdb_Burn_Project *ecdb_burn_project_new(void); +void ecdb_burn_project_destroy(Ecdb_Burn_Project *proj); +void *ecdb_drive_progress_update(void *data); #endif diff --git a/ecdb/trunk/src/ecdb_common.h b/ecdb/trunk/src/ecdb_common.h index 90002ca..33e70a4 100644 --- a/ecdb/trunk/src/ecdb_common.h +++ b/ecdb/trunk/src/ecdb_common.h @@ -14,60 +14,60 @@ typedef enum burn_drive_status BurnDriveStatus; typedef enum _Ecdb_Project_Type Ecdb_Project_Type; enum _Ecdb_Project_Type { - ECDB_BURN_PROJECT, - ECDB_AUDIO_PROJECT, - ECDB_ERASE_PROJECT, - ECDB_COPY_PROJECT, - ECDB_IMAGE_PROJECT + ECDB_BURN_PROJECT, + ECDB_AUDIO_PROJECT, + ECDB_ERASE_PROJECT, + ECDB_COPY_PROJECT, + ECDB_IMAGE_PROJECT }; typedef enum _Ecdb_Burn_Result Ecdb_Burn_Result; enum _Ecdb_Burn_Result { - ECDB_ERROR_IMAGE_CREATE, - ECDB_ERROR_SOURCE_ATTACH, - ECDB_ERROR_WRITE_MODE, - ECDB_ERROR_NONE + ECDB_ERROR_IMAGE_CREATE, + ECDB_ERROR_SOURCE_ATTACH, + ECDB_ERROR_WRITE_MODE, + ECDB_ERROR_NONE }; typedef struct _Ecdb_Drive_Info Ecdb_Drive_Info; struct _Ecdb_Drive_Info { - /* Speeds */ - int *read_speeds; - int *write_speeds; + /* Speeds */ + int *read_speeds; + int *write_speeds; - /* Profiles */ - char *profile_name; - int profile_loaded; + /* Profiles */ + char *profile_name; + int profile_loaded; - /* Drive info */ - char *vendor; - char *product; - char *revision; - char *location; + /* Drive info */ + char *vendor; + char *product; + char *revision; + char *location; - unsigned char read_dvdram:1; - unsigned char read_dvdr:1; - unsigned char read_dvdrom:1; - unsigned char read_cdr:1; - unsigned char read_cdrw:1; - unsigned char write_dvdram:1; - unsigned char write_dvdr:1; - unsigned char write_cdr:1; - unsigned char write_simulate:1; + unsigned char read_dvdram:1; + unsigned char read_dvdr:1; + unsigned char read_dvdrom:1; + unsigned char read_cdr:1; + unsigned char read_cdrw:1; + unsigned char write_dvdram:1; + unsigned char write_dvdr:1; + unsigned char write_cdr:1; + unsigned char write_simulate:1; - BurnDriveInfo *tangible; + BurnDriveInfo *tangible; }; typedef struct _Ecdb_Project_Info Ecdb_Project; struct _Ecdb_Project_Info { - /* The drive reference */ - Ecdb_Drive_Info *drive; - Ecore_Event_Handler *ev_handler; - Ecore_Pipe *pipe; - unsigned int type; + /* The drive reference */ + Ecdb_Drive_Info *drive; + Ecore_Event_Handler *ev_handler; + Ecore_Pipe *pipe; + unsigned int type; }; /* Typecast a pointer to an Ecdb_Source */ @@ -76,12 +76,12 @@ struct _Ecdb_Project_Info typedef struct _Ecdb_Source Ecdb_Source; struct _Ecdb_Source { - const char *dst; - unsigned char dir:1; - unsigned int num_children; - Ecdb_Source **children; - Ecdb_Source *parent; - IsoNode *node; + const char *dst; + unsigned char dir:1; + unsigned int num_children; + Ecdb_Source **children; + Ecdb_Source *parent; + IsoNode *node; }; /* Typecast a pointer to an Ecdb_Project */ @@ -90,42 +90,42 @@ struct _Ecdb_Source typedef struct _Ecdb_Burn_Project Ecdb_Burn_Project; struct _Ecdb_Burn_Project { - /* Inherit from normal project */ - Ecdb_Project proj; + /* Inherit from normal project */ + Ecdb_Project proj; - /* Files are important here */ - Ecdb_Source *files; + /* Files are important here */ + Ecdb_Source *files; - /* Ids */ - char *volume_id; - char *publisher_id; - char *data_preparer_id; - char *system_id; - char *application_id; - char *copywrite_id; - char *abstract_id; - char *biblio_id; + /* Ids */ + char *volume_id; + char *publisher_id; + char *data_preparer_id; + char *system_id; + char *application_id; + char *copywrite_id; + char *abstract_id; + char *biblio_id; - /* iso options */ - unsigned char iso_level:1; - unsigned char use_joliet:1; - unsigned char use_rockridge:1; - unsigned char follow_symlinks:1; - unsigned char ignore_hidden:1; - unsigned char ignore_special:1; - unsigned char iso1990:1; + /* iso options */ + unsigned char iso_level:1; + unsigned char use_joliet:1; + unsigned char use_rockridge:1; + unsigned char follow_symlinks:1; + unsigned char ignore_hidden:1; + unsigned char ignore_special:1; + unsigned char iso1990:1; - /* burn options */ - unsigned char opc:1; - unsigned char multi:1; - unsigned char simulate:1; - unsigned char underrun_proof:1; - int speed; + /* burn options */ + unsigned char opc:1; + unsigned char multi:1; + unsigned char simulate:1; + unsigned char underrun_proof:1; + int speed; - /* burn stuff */ - int fifo_chunksize; - int fifo_chunks; - int burn_mode; + /* burn stuff */ + int fifo_chunksize; + int fifo_chunks; + int burn_mode; }; /* Typecast a pointer to an Ecdb_Burn_Project */ @@ -134,13 +134,13 @@ struct _Ecdb_Burn_Project typedef struct _Ecdb_Audio_Project Ecdb_Audio_Project; struct _Ecdb_Audio_Project { - /* Inherit from normal project */ - Ecdb_Project proj; + /* Inherit from normal project */ + Ecdb_Project proj; - /* Audio tracks */ - Ecdb_Source *tracks; - int num_tracks; - int num_transcode_complete; + /* Audio tracks */ + Ecdb_Source *tracks; + int num_tracks; + int num_transcode_complete; }; /* Typecast a pointer to an Ecdb_Audio_Project */ @@ -149,12 +149,12 @@ struct _Ecdb_Audio_Project typedef struct _Ecdb_Erase_Project Ecdb_Erase_Project; struct _Ecdb_Erase_Project { - /* Inherit from normal project */ - Ecdb_Project proj; + /* Inherit from normal project */ + Ecdb_Project proj; - /* Speed */ - unsigned char quick:1; - unsigned char format:1; + /* Speed */ + unsigned char quick:1; + unsigned char format:1; }; /* Typecast a pointer to an Ecdb_Erase_Project */ diff --git a/ecdb/trunk/src/ecdb_drives.c b/ecdb/trunk/src/ecdb_drives.c index eafd20b..df2cd60 100644 --- a/ecdb/trunk/src/ecdb_drives.c +++ b/ecdb/trunk/src/ecdb_drives.c @@ -5,159 +5,169 @@ void ecdb_drive_info_free_cb(void *data); int ecdb_aquire_drive_info(void) { - int ret, i; - unsigned int drive_num; - struct burn_drive_info *drives_current; - struct burn_speed_descriptor *speeds; + int ret, i; + unsigned int drive_num; + struct burn_drive_info *drives_current; + struct burn_speed_descriptor *speeds; - ret = 0; - if (em->drives) - ecore_list_destroy(em->drives); + ret = 0; + if (em->drives) + { + ecore_list_destroy(em->drives); + } - em->drives = ecore_list_new(); - ecore_list_free_cb_set(em->drives, ecdb_drive_info_free_cb); + em->drives = ecore_list_new(); + ecore_list_free_cb_set(em->drives, ecdb_drive_info_free_cb); - while (!ret) - ret = burn_drive_scan(&drives_current, &drive_num); + while (!ret) + { + ret = burn_drive_scan(&drives_current, &drive_num); + } - for (i = 0; i < drive_num; i++) - { - Ecdb_Drive_Info *drive; + for (i = 0; i < drive_num; i++) + { + Ecdb_Drive_Info *drive; - drive = calloc(1, sizeof(Ecdb_Drive_Info)); + drive = calloc(1, sizeof(Ecdb_Drive_Info)); - if (!drive) - return FALSE; + if (!drive) + { + return FALSE; + } - /* It would be nice if there was an easier way to do this */ - drive->product = strdup(drives_current[i].product); - drive->vendor = strdup(drives_current[i].vendor); - drive->revision = strdup(drives_current[i].revision); - drive->location = strdup(drives_current[i].location); - drive->read_dvdram = drives_current[i].read_dvdram; - drive->read_dvdr = drives_current[i].read_dvdr; - drive->read_dvdrom = drives_current[i].read_dvdrom; - drive->read_cdr = drives_current[i].read_cdr; - drive->read_cdrw = drives_current[i].read_cdrw; - drive->write_dvdram = drives_current[i].write_dvdram; - drive->write_dvdr = drives_current[i].write_dvdr; - drive->write_cdr = drives_current[i].write_cdr; - drive->write_simulate = drives_current[i].write_simulate; + /* It would be nice if there was an easier way to do this */ + drive->product = strdup(drives_current[i].product); + drive->vendor = strdup(drives_current[i].vendor); + drive->revision = strdup(drives_current[i].revision); + drive->location = strdup(drives_current[i].location); + drive->read_dvdram = drives_current[i].read_dvdram; + drive->read_dvdr = drives_current[i].read_dvdr; + drive->read_dvdrom = drives_current[i].read_dvdrom; + drive->read_cdr = drives_current[i].read_cdr; + drive->read_cdrw = drives_current[i].read_cdrw; + drive->write_dvdram = drives_current[i].write_dvdram; + drive->write_dvdr = drives_current[i].write_dvdr; + drive->write_cdr = drives_current[i].write_cdr; + drive->write_simulate = drives_current[i].write_simulate; - burn_drive_get_speedlist(drives_current[i].drive, &speeds); + burn_drive_get_speedlist(drives_current[i].drive, &speeds); - drive->profile_name = strdup(speeds->profile_name); - drive->profile_loaded = speeds->profile_loaded; + drive->profile_name = strdup(speeds->profile_name); + drive->profile_loaded = speeds->profile_loaded; - while (speeds->next) - { - i++; - speeds = speeds->next; - } + while (speeds->next) + { + i++; + speeds = speeds->next; + } - drive->read_speeds = calloc(i + 2, sizeof(int)); - drive->write_speeds = calloc(i + 2, sizeof(int)); + drive->read_speeds = calloc(i + 2, sizeof(int)); + drive->write_speeds = calloc(i + 2, sizeof(int)); - drive->read_speeds[0] = i + 1; - drive->write_speeds[0] = i + 1; + drive->read_speeds[0] = i + 1; + drive->write_speeds[0] = i + 1; - for (ret = 1; ret <= i; ret++) - { - drive->write_speeds[ret] = speeds->write_speed; - drive->read_speeds[ret] = speeds->read_speed; - speeds = speeds->prev; - } + for (ret = 1; ret <= i; ret++) + { + drive->write_speeds[ret] = speeds->write_speed; + drive->read_speeds[ret] = speeds->read_speed; + speeds = speeds->prev; + } - burn_drive_free_speedlist(&speeds); - ecore_list_append(em->drives, drive); - } + burn_drive_free_speedlist(&speeds); + ecore_list_append(em->drives, drive); + } - burn_drive_info_free(drives_current); + burn_drive_info_free(drives_current); - return TRUE; + return TRUE; } void ecdb_drive_info_free_cb(void *data) { - Ecdb_Drive_Info *info; + Ecdb_Drive_Info *info; - info = data; + info = data; - FREE(info->read_speeds); - FREE(info->write_speeds); - FREE(info->vendor); - FREE(info->product); - FREE(info->revision); - FREE(info->location); - FREE(info->profile_name); - FREE(info); + FREE(info->read_speeds); + FREE(info->write_speeds); + FREE(info->vendor); + FREE(info->product); + FREE(info->revision); + FREE(info->location); + FREE(info->profile_name); + FREE(info); } void ecdb_print_drive_info(void) { - Ecdb_Drive_Info *drive; - int j, i, h; + Ecdb_Drive_Info *drive; + int j, i, h; - ecore_list_first_goto(em->drives); - while ((drive = ecore_list_next(em->drives))) - { - printf("Vendor: %s, Product: %s, Revision: %s, " - "Location: %s\n", - drive->vendor, drive->product, - drive->revision, drive->location); - printf("Profile name: %s, Loaded: %d\n", - drive->profile_name, - drive->profile_loaded); - printf("Read DVDRAM: %d, Read DVDR: %d, Read DVDROM: %d, " - "Read CDR: %d, Read CDRW: %d\n", - drive->read_dvdram, - drive->read_dvdr, - drive->read_dvdrom, - drive->read_cdr, - drive->read_cdrw); - printf("Write DVDRAM: %d, Write DVDR: %d, Write CDR: %d, " - "Write Simulate: %d\n", - drive->write_dvdram, - drive->write_dvdr, - drive->write_cdr, - drive->write_simulate); + ecore_list_first_goto(em->drives); + while ((drive = ecore_list_next(em->drives))) + { + printf("Vendor: %s, Product: %s, Revision: %s, " + "Location: %s\n", + drive->vendor, drive->product, + drive->revision, drive->location); + printf("Profile name: %s, Loaded: %d\n", + drive->profile_name, + drive->profile_loaded); + printf("Read DVDRAM: %d, Read DVDR: %d, Read DVDROM: %d, " + "Read CDR: %d, Read CDRW: %d\n", + drive->read_dvdram, + drive->read_dvdr, + drive->read_dvdrom, + drive->read_cdr, + drive->read_cdrw); + printf("Write DVDRAM: %d, Write DVDR: %d, Write CDR: %d, " + "Write Simulate: %d\n", + drive->write_dvdram, + drive->write_dvdr, + drive->write_cdr, + drive->write_simulate); - j = drive->read_speeds[0]; + j = drive->read_speeds[0]; - for (i = 1; i < j; i ++) - { - if ((h = drive->write_speeds[i])) - printf("Write: %d\n", h); - if ((h = drive->read_speeds[i])) - printf("Read: %d\n", h); - } - } + for (i = 1; i < j; i ++) + { + if ((h = drive->write_speeds[i])) + { + printf("Write: %d\n", h); + } + if ((h = drive->read_speeds[i])) + { + printf("Read: %d\n", h); + } + } + } } int ecdb_aquire_drive(Ecdb_Project *proj, unsigned int idx) { - Ecdb_Drive_Info *info; - char adr[BURN_DRIVE_ADR_LEN]; + Ecdb_Drive_Info *info; + char adr[BURN_DRIVE_ADR_LEN]; - info = ecore_list_index_goto(em->drives, idx); - if (burn_drive_convert_fs_adr(info->location, adr) <= 0) - { - printf("Error: Address doesn't provide cd burner!\n"); - return FALSE; - } + info = ecore_list_index_goto(em->drives, idx); + if (burn_drive_convert_fs_adr(info->location, adr) <= 0) + { + printf("Error: Address doesn't provide cd burner!\n"); + return FALSE; + } - if (burn_drive_scan_and_grab(&info->tangible, adr, 1) > 0) - { - proj->drive = info; - return TRUE; - } - else - { - info->tangible = NULL; - return FALSE; - } + if (burn_drive_scan_and_grab(&info->tangible, adr, 1) > 0) + { + proj->drive = info; + return TRUE; + } + else + { + info->tangible = NULL; + return FALSE; + } } - + diff --git a/ecdb/trunk/src/ecdb_drives.h b/ecdb/trunk/src/ecdb_drives.h index 95003a5..92df77b 100644 --- a/ecdb/trunk/src/ecdb_drives.h +++ b/ecdb/trunk/src/ecdb_drives.h @@ -1,8 +1,8 @@ #ifndef ECDB_DRIVES_H #define ECDB_DRIVES_H -int ecdb_aquire_drive_info(void); -void ecdb_print_drive_info(void); -int ecdb_aquire_drive(Ecdb_Project *proj, unsigned int idx); +int ecdb_aquire_drive_info(void); +void ecdb_print_drive_info(void); +int ecdb_aquire_drive(Ecdb_Project *proj, unsigned int idx); #endif diff --git a/ecdb/trunk/src/ecdb_erase.c b/ecdb/trunk/src/ecdb_erase.c index 9eb5f89..2ff712d 100644 --- a/ecdb/trunk/src/ecdb_erase.c +++ b/ecdb/trunk/src/ecdb_erase.c @@ -2,146 +2,152 @@ int ecdb_erase_project_init(Ecdb_Erase_Project *proj); static void ecdb_erase_progress_handler(void *data, void *buffer, - unsigned int nbyte); + unsigned int nbyte); int ecdb_erase_finished(void *data, int type, void *event); - + Ecdb_Erase_Project * ecdb_erase_project_new(void) { - Ecdb_Erase_Project *proj; + Ecdb_Erase_Project *proj; - proj = calloc(1, sizeof(Ecdb_Erase_Project)); - if (!proj) - return NULL; - if (!ecdb_erase_project_init(proj)) - { - FREE(proj); - return NULL; - } + proj = calloc(1, sizeof(Ecdb_Erase_Project)); + if (!proj) + { + return NULL; + } + + if (!ecdb_erase_project_init(proj)) + { + FREE(proj); + return NULL; + } - return proj; + return proj; } int ecdb_erase_project_init(Ecdb_Erase_Project *proj) { - if (!ecdb_project_init(ECDB_PROJECT(proj))) - return FALSE; + if (!ecdb_project_init(ECDB_PROJECT(proj))) + { + return FALSE; + } - /* Proper defaults */ - ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_ERASE_PROJECT); - proj->quick = TRUE; - proj->format = FALSE; + /* Proper defaults */ + ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_ERASE_PROJECT); + proj->quick = TRUE; + proj->format = FALSE; - return TRUE; + return TRUE; } void ecdb_erase_project_destroy(Ecdb_Erase_Project *proj) { - ecdb_project_destroy(ECDB_PROJECT(proj)); - FREE(proj); + ecdb_project_destroy(ECDB_PROJECT(proj)); + FREE(proj); } // FIXME Make this return an error code int ecdb_erase_disc(Ecdb_Erase_Project *proj) { - BurnDriveStatus disc_state; - pthread_t progress_update; + BurnDriveStatus disc_state; + pthread_t progress_update; - disc_state = burn_disc_get_status(ECDB_PROJECT(proj)->drive-> - tangible[0].drive); - if (disc_state == BURN_DISC_BLANK) - { - printf("Disc is already blank!\n"); - return FALSE; - } - else if (disc_state == BURN_DISC_EMPTY) - { - printf("No disc!\n"); - return FALSE; - } - else if (!burn_disc_erasable(ECDB_PROJECT(proj)->drive-> - tangible[0].drive)) - { - printf("Not able to erase!\n"); - return FALSE; - } - else if (disc_state == BURN_DISC_FULL || BURN_DISC_APPENDABLE) - { - printf("Beginning to erase disc!\n"); - ECDB_PROJECT(proj)->pipe = ecore_pipe_add - (ecdb_erase_progress_handler, - NULL); - burn_disc_erase(ECDB_PROJECT(proj)->drive-> - tangible[0].drive, proj->quick); - pthread_create(&progress_update, NULL, - ecdb_drive_progress_update, proj); - pthread_detach(progress_update); - ECDB_PROJECT(proj)->ev_handler = ecore_event_handler_add - (ECDB_DRIVE_ACTION_FINISHED, - ecdb_erase_finished, proj); - return TRUE; - } - else - { - printf("Not of erasable type\n"); - return FALSE; - } + disc_state = burn_disc_get_status(ECDB_PROJECT(proj)->drive-> + tangible[0].drive); + if (disc_state == BURN_DISC_BLANK) + { + printf("Disc is already blank!\n"); + return FALSE; + } + else if (disc_state == BURN_DISC_EMPTY) + { + printf("No disc!\n"); + return FALSE; + } + else if (!burn_disc_erasable(ECDB_PROJECT(proj)->drive-> + tangible[0].drive)) + { + printf("Not able to erase!\n"); + return FALSE; + } + else if (disc_state == BURN_DISC_FULL || BURN_DISC_APPENDABLE) + { + printf("Beginning to erase disc!\n"); + ECDB_PROJECT(proj)->pipe = ecore_pipe_add(ecdb_erase_progress_handler, + NULL); + burn_disc_erase(ECDB_PROJECT(proj)->drive->tangible[0].drive, + proj->quick); + pthread_create(&progress_update, NULL, ecdb_drive_progress_update, proj); + pthread_detach(progress_update); + ECDB_PROJECT(proj)->ev_handler = ecore_event_handler_add + (ECDB_DRIVE_ACTION_FINISHED, ecdb_erase_finished, proj); + return TRUE; + } + else + { + printf("Not of erasable type\n"); + return FALSE; + } } static void ecdb_erase_progress_handler(void *data, void *buffer, unsigned int nbyte) { - BurnProgress *p; - Evas_Object *swallow; - char buf[1024]; - static int last_sector = 0; + BurnProgress *p; + Evas_Object *swallow; + char buf[1024]; + static int last_sector = 0; - if ((nbyte != sizeof(BurnProgress)) || (!strcmp((char *)buffer, "AC"))) - { - ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL); - last_sector = 0; - return; - } - else - { - p = buffer; - } + if ((nbyte != sizeof(BurnProgress)) || (!strcmp((char *)buffer, "AC"))) + { + ecore_event_add(ECDB_DRIVE_ACTION_FINISHED, NULL, NULL, NULL); + last_sector = 0; + return; + } + else + { + p = buffer; + } - /* Libburn reports p->sector as being 0 right at the end of the job, - * so store the last sector and use that to determine the proper - * percentage/sector to set - */ - if (last_sector <= p->sector) - last_sector = p->sector; - else - last_sector = p->sectors; + /* Libburn reports p->sector as being 0 right at the end of the job, + * so store the last sector and use that to determine the proper + * percentage/sector to set + */ + if (last_sector <= p->sector) + { + last_sector = p->sector; + } + else + { + last_sector = p->sectors; + } - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "erase_page"); - snprintf(buf, sizeof(buf), "%d/%d", last_sector, p->sectors); - edje_object_part_text_set(swallow, "progress_text", buf); - snprintf(buf, sizeof(buf), "%d%%", (int)((double)(last_sector + 1) / - (double)p->sectors * 100.0)); - edje_object_part_text_set(swallow, "progress_percent", buf); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "erase_page"); + snprintf(buf, sizeof(buf), "%d/%d", last_sector, p->sectors); + edje_object_part_text_set(swallow, "progress_text", buf); + snprintf(buf, sizeof(buf), "%d%%", (int)((double)(last_sector + 1) / + (double)p->sectors * 100.0)); + edje_object_part_text_set(swallow, "progress_percent", buf); } int ecdb_erase_finished(void *data, int type, void *event) { - Ecdb_Erase_Project *proj; + Ecdb_Erase_Project *proj; - proj = data; + proj = data; - burn_drive_release(ECDB_PROJECT(proj)->drive->tangible[0].drive, 0); - burn_drive_info_free(ECDB_PROJECT(proj)->drive->tangible); - ecore_event_handler_del(ECDB_PROJECT(proj)->ev_handler); - ecdb_erase_project_destroy(proj); - ecdb_gui_erase_cleanup(); + burn_drive_release(ECDB_PROJECT(proj)->drive->tangible[0].drive, 0); + burn_drive_info_free(ECDB_PROJECT(proj)->drive->tangible); + ecore_event_handler_del(ECDB_PROJECT(proj)->ev_handler); + ecdb_erase_project_destroy(proj); + ecdb_gui_erase_cleanup(); - return TRUE; + return TRUE; } diff --git a/ecdb/trunk/src/ecdb_erase.h b/ecdb/trunk/src/ecdb_erase.h index 0159dfe..d3ca707 100644 --- a/ecdb/trunk/src/ecdb_erase.h +++ b/ecdb/trunk/src/ecdb_erase.h @@ -1,9 +1,9 @@ #ifndef ECDB_ERASE_H #define ECDB_ERASE_H -void ecdb_erase_project_start(Ecdb_Erase_Project *proj); -int ecdb_erase_disc(Ecdb_Erase_Project *proj); +void ecdb_erase_project_start(Ecdb_Erase_Project *proj); +int ecdb_erase_disc(Ecdb_Erase_Project *proj); Ecdb_Erase_Project *ecdb_erase_project_new(); -void ecdb_erase_project_destroy(Ecdb_Erase_Project *proj); +void ecdb_erase_project_destroy(Ecdb_Erase_Project *proj); #endif diff --git a/ecdb/trunk/src/ecdb_filelist_custom.c b/ecdb/trunk/src/ecdb_filelist_custom.c index dfb62b4..bd64d27 100644 --- a/ecdb/trunk/src/ecdb_filelist_custom.c +++ b/ecdb/trunk/src/ecdb_filelist_custom.c @@ -2,168 +2,165 @@ static void free_file(Ewl_Filelist_File *file); static void ecdb_custom_filelist_cb_clicked(Ewl_Widget *w, void *ev, - void *data); - + void *data); static Ewl_Widget *ecdb_custom_filelist_view_widget_fetch(void *data, - unsigned int row, unsigned int column); + unsigned int row, unsigned int column); static void *ecdb_custom_filelist_model_data_fetch(void *data, unsigned int row, - unsigned int column); - + unsigned int column); static void ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir); static unsigned int ecdb_custom_filelist_model_data_unref(void *data); static Ewl_Filelist_Directory *ecdb_custom_filelist_directory_new - (Ecdb_Source *src); + (Ecdb_Source *src); static void ecdb_custom_filelist_dnd_dropped_cb(Ewl_Widget *w, void *ev, - void *data); + void *data); Ewl_Widget * ecdb_custom_filelist_new(void) { - const char *dnd_types[] = {"text/uri-list", NULL}; - Ewl_Widget *ret; + const char *dnd_types[] = {"text/uri-list", NULL}; + Ewl_Widget *ret; - ret = ewl_filelist_new(); - ewl_model_data_unref_set(EWL_FILELIST(ret)->model, - ecdb_custom_filelist_model_data_unref); - ewl_model_data_fetch_set(EWL_FILELIST(ret)->model, - ecdb_custom_filelist_model_data_fetch); - ewl_view_widget_fetch_set(EWL_FILELIST(ret)->view, - ecdb_custom_filelist_view_widget_fetch); - ewl_callback_append(ret, EWL_CALLBACK_DND_DATA_RECEIVED, - ecdb_custom_filelist_dnd_dropped_cb, NULL); - ewl_dnd_accepted_types_set(ret, dnd_types); - ewl_callback_del_type(EWL_FILELIST(ret)->controller, - EWL_CALLBACK_CLICKED); - ewl_callback_prepend(EWL_FILELIST(ret)->controller, - EWL_CALLBACK_CLICKED, ecdb_custom_filelist_cb_clicked, - ret); - return ret; + ret = ewl_filelist_new(); + ewl_model_data_unref_set(EWL_FILELIST(ret)->model, + ecdb_custom_filelist_model_data_unref); + ewl_model_data_fetch_set(EWL_FILELIST(ret)->model, + ecdb_custom_filelist_model_data_fetch); + ewl_view_widget_fetch_set(EWL_FILELIST(ret)->view, + ecdb_custom_filelist_view_widget_fetch); + ewl_callback_append(ret, EWL_CALLBACK_DND_DATA_RECEIVED, + ecdb_custom_filelist_dnd_dropped_cb, NULL); + ewl_dnd_accepted_types_set(ret, dnd_types); + ewl_callback_del_type(EWL_FILELIST(ret)->controller, EWL_CALLBACK_CLICKED); + ewl_callback_prepend(EWL_FILELIST(ret)->controller, EWL_CALLBACK_CLICKED, + ecdb_custom_filelist_cb_clicked, ret); + return ret; } static void ecdb_custom_filelist_dnd_dropped_cb(Ewl_Widget *w, void *ev, - void *data__UNUSED__) + void *data__UNUSED__) { - int i; - Ewl_Event_Dnd_Data_Received *dnd = ev; - char **files = dnd->data; - Ecdb_Source *parent, *child; - Efreet_Uri *uri; + int i; + Ewl_Event_Dnd_Data_Received *dnd = ev; + char **files = dnd->data; + Ecdb_Source *parent, *child; + Efreet_Uri *uri; - /* Get the parent, find the path of the file(s) dropped - * and add them as children to parent */ - parent = ewl_widget_data_get(w, "source"); + /* Get the parent, find the path of the file(s) dropped + * and add them as children to parent */ + parent = ewl_widget_data_get(w, "source"); - for (i = 0; i < dnd->len; i++) - { - uri = efreet_uri_decode(files[i]); - if (!ecore_file_exists(uri->path)) - { - efreet_uri_free(uri); - continue; - } - child = ecdb_source_new(); - ecdb_source_data_set(child, uri->path); - ecdb_source_child_append(parent, child); - efreet_uri_free(uri); - } + for (i = 0; i < dnd->len; i++) + { + uri = efreet_uri_decode(files[i]); + if (!ecore_file_exists(uri->path)) + { + efreet_uri_free(uri); + continue; + } + child = ecdb_source_new(); + ecdb_source_data_set(child, uri->path); + ecdb_source_child_append(parent, child); + efreet_uri_free(uri); + } - ecdb_custom_filelist_directory_set(EWL_FILELIST(w), parent); + ecdb_custom_filelist_directory_set(EWL_FILELIST(w), parent); - /* And filter it here -- a bit of a hack */ - ewl_filelist_model_data_sort(ewl_mvc_data_get - (EWL_MVC(EWL_FILELIST(w)->controller)), - 0, EWL_SORT_DIRECTION_ASCENDING); - ewl_mvc_dirty_set(EWL_MVC(EWL_FILELIST(w)->controller), TRUE); + /* And filter it here -- a bit of a hack */ + ewl_filelist_model_data_sort(ewl_mvc_data_get + (EWL_MVC(EWL_FILELIST(w)->controller)), + 0, EWL_SORT_DIRECTION_ASCENDING); + ewl_mvc_dirty_set(EWL_MVC(EWL_FILELIST(w)->controller), TRUE); } void ecdb_custom_filelist_directory_set(Ewl_Filelist *fl, Ecdb_Source *src) { - if (src) - { - Ewl_Filelist_Directory *data; - Ewl_Event_Action_Response ev_data; + if (src) + { + Ewl_Filelist_Directory *data; + Ewl_Event_Action_Response ev_data; - data = ewl_mvc_data_get(EWL_MVC(fl->controller)); - if (data) ecdb_custom_filelist_model_data_unref(data); + data = ewl_mvc_data_get(EWL_MVC(fl->controller)); + if (data) + { + ecdb_custom_filelist_model_data_unref(data); + } - data = ecdb_custom_filelist_directory_new(src); - ewl_mvc_data_set(EWL_MVC(fl->controller), data); - ev_data.response = EWL_FILELIST_EVENT_DIR_CHANGE; - ewl_callback_call_with_event_data(EWL_WIDGET(fl), - EWL_CALLBACK_VALUE_CHANGED, &ev_data); - - /* Set the source as needed for file operations */ - ewl_widget_data_set(EWL_WIDGET(fl), "source", src); - } + data = ecdb_custom_filelist_directory_new(src); + ewl_mvc_data_set(EWL_MVC(fl->controller), data); + ev_data.response = EWL_FILELIST_EVENT_DIR_CHANGE; + ewl_callback_call_with_event_data(EWL_WIDGET(fl), + EWL_CALLBACK_VALUE_CHANGED, &ev_data); + + /* Set the source as needed for file operations */ + ewl_widget_data_set(EWL_WIDGET(fl), "source", src); + } } static Ewl_Filelist_Directory * ecdb_custom_filelist_directory_new(Ecdb_Source *parent) { - Ecdb_Source *src; - Ewl_Filelist_Directory *dir; - Ewl_Filelist_File *file; + Ecdb_Source *src; + Ewl_Filelist_Directory *dir; + Ewl_Filelist_File *file; - struct stat st; - int nf = 0, nd = 0, i = 0; - Ecore_List *files, *dirs; + struct stat st; + int nf = 0, nd = 0, i = 0; + Ecore_List *files, *dirs; - files = ecore_list_new(); - dirs = ecore_list_new(); - ecore_list_free_cb_set(files, ECORE_FREE_CB(free_file)); - ecore_list_free_cb_set(dirs, ECORE_FREE_CB(free_file)); + files = ecore_list_new(); + dirs = ecore_list_new(); + ecore_list_free_cb_set(files, ECORE_FREE_CB(free_file)); + ecore_list_free_cb_set(dirs, ECORE_FREE_CB(free_file)); - if (!parent) - return NULL; + if (!parent) + { + return NULL; + } - /* No up for now */ + while ((src = parent->children[i])) + { + file = calloc(1, sizeof(Ewl_Filelist_File)); + file->name = eina_stringshare_add(src->dst); - while ((src = parent->children[i])) - { - file = calloc(1, sizeof(Ewl_Filelist_File)); - file->name = eina_stringshare_add(src->dst); + stat(src->dst, &st); + file->size = st.st_size; + file->modtime = st.st_mtime; + file->mode = st.st_mode; + file->groupname = st.st_gid; + file->username = st.st_uid; + file->is_dir = src->dir; + file->readable = ecore_file_can_read(src->dst); + file->writeable = ecore_file_can_write(src->dst); - stat(src->dst, &st); - file->size = st.st_size; - file->modtime = st.st_mtime; - file->mode = st.st_mode; - file->groupname = st.st_gid; - file->username = st.st_uid; - file->is_dir = src->dir; - file->readable = ecore_file_can_read(src->dst); - file->writeable = ecore_file_can_write(src->dst); + if (src->dir) + { + ecore_list_append(dirs, file); + nd++; + } - if (src->dir) - { - ecore_list_append(dirs, file); - nd++; - } + else + { + ecore_list_append(files, file); + nf++; + } - else - { - ecore_list_append(files, file); - nf++; - } + i++; + } - /* Oops */ - i++; - } + dir = calloc(1, sizeof(Ewl_Filelist_Directory)); + dir->files = ecore_list_new(); + dir->dirs = ecore_list_new(); + dir->rfiles = files; + dir->rdirs = dirs; + dir->num_dirs = nd; + dir->num_files = nf; - dir = calloc(1, sizeof(Ewl_Filelist_Directory)); + ecdb_custom_filelist_model_filter(dir); - dir->files = ecore_list_new(); - dir->dirs = ecore_list_new(); - dir->rfiles = files; - dir->rdirs = dirs; - dir->num_dirs = nd; - dir->num_files = nf; - - ecdb_custom_filelist_model_filter(dir); - - return dir; + return dir; } static void @@ -176,208 +173,216 @@ free_file(Ewl_Filelist_File *file) static void ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir) { - Ewl_Filelist_File *file; - int nd, nf; - - ecore_list_clear(dir->files); - ecore_list_clear(dir->dirs); - nd = nf = 0; + Ewl_Filelist_File *file; + int nd, nf; + + ecore_list_clear(dir->files); + ecore_list_clear(dir->dirs); + nd = nf = 0; - if (!dir->show_dot) - { - ecore_list_first_goto(dir->rfiles); - while ((file = ecore_list_next(dir->rfiles))) - { - if (ecore_file_file_get(file->name)[0] != '.') - { - ecore_list_append(dir->files, file); - nf++; - } - } - ecore_list_first_goto(dir->rdirs); - while ((file = ecore_list_next(dir->rdirs))) - { - if (ecore_file_file_get(file->name)[0] != '.') - { - ecore_list_append(dir->dirs, file); - nd++; - } - } - } - else - { - ecore_list_first_goto(dir->rfiles); - while ((file = ecore_list_next(dir->rfiles))) - { - ecore_list_append(dir->files, file); - nf++; - } - ecore_list_first_goto(dir->rdirs); - while ((file = ecore_list_next(dir->rdirs))) - { - ecore_list_append(dir->dirs, file); - nd++; - } - } + if (!dir->show_dot) + { + ecore_list_first_goto(dir->rfiles); + while ((file = ecore_list_next(dir->rfiles))) + { + if (ecore_file_file_get(file->name)[0] != '.') + { + ecore_list_append(dir->files, file); + nf++; + } + } + ecore_list_first_goto(dir->rdirs); + while ((file = ecore_list_next(dir->rdirs))) + { + if (ecore_file_file_get(file->name)[0] != '.') + { + ecore_list_append(dir->dirs, file); + nd++; + } + } + } + else + { + ecore_list_first_goto(dir->rfiles); + while ((file = ecore_list_next(dir->rfiles))) + { + ecore_list_append(dir->files, file); + nf++; + } + ecore_list_first_goto(dir->rdirs); + while ((file = ecore_list_next(dir->rdirs))) + { + ecore_list_append(dir->dirs, file); + nd++; + } + } - dir->num_dirs = nd; - dir->num_files = nf; + dir->num_dirs = nd; + dir->num_files = nf; } static unsigned int ecdb_custom_filelist_model_data_unref(void *data) { - Ewl_Filelist_Directory *dir; + Ewl_Filelist_Directory *dir; - dir = data; - ecore_list_destroy(dir->files); - ecore_list_destroy(dir->dirs); - ecore_list_destroy(dir->rfiles); - ecore_list_destroy(dir->rdirs); - FREE(dir); - return TRUE; + dir = data; + ecore_list_destroy(dir->files); + ecore_list_destroy(dir->dirs); + ecore_list_destroy(dir->rfiles); + ecore_list_destroy(dir->rdirs); + FREE(dir); + return TRUE; } static void * ecdb_custom_filelist_model_data_fetch(void *data, unsigned int row, - unsigned int column) + unsigned int column) { - Ewl_Filelist_Directory *fld; - Ewl_Filelist_File *file; - int i; - void *ret; + Ewl_Filelist_Directory *fld; + Ewl_Filelist_File *file; + int i; + void *ret; - fld = data; + fld = data; - /* Check if in dirs or files list */ - if (row < fld->num_dirs) - file = ecore_list_index_goto(fld->dirs, row); - else - { - i = (row - fld->num_dirs); - file = ecore_list_index_goto(fld->files, i); - } + /* Check if in dirs or files list */ + if (row < fld->num_dirs) + { + file = ecore_list_index_goto(fld->dirs, row); + } + else + { + i = (row - fld->num_dirs); + file = ecore_list_index_goto(fld->files, i); + } - if (column == 1) ret = ewl_filelist_size_get(file->size); - else if (column == 2) ret = ewl_filelist_perms_get(file->mode); - else if (column == 3) ret = ewl_filelist_username_get - (file->username); - else if (column == 4) ret = ewl_filelist_groupname_get - (file->groupname); - else if (column == 5) ret = ewl_filelist_modtime_get - (file->modtime); - else ret = strdup(file->name); + if (column == 1) ret = ewl_filelist_size_get(file->size); + else if (column == 2) ret = ewl_filelist_perms_get(file->mode); + else if (column == 3) ret = ewl_filelist_username_get(file->username); + else if (column == 4) ret = ewl_filelist_groupname_get(file->groupname); + else if (column == 5) ret = ewl_filelist_modtime_get(file->modtime); + else ret = strdup(file->name); - /* ret needs to be freed by the view or with model_data_free_set */ - return ret; + /* ret needs to be freed by the view or with model_data_free_set */ + return ret; } static void ecdb_custom_filelist_cb_clicked(Ewl_Widget *w, void *ev, void *data) { - Ewl_Event_Mouse_Down *md; - char *file; - int i = 0; - Ewl_Widget *c; - Ewl_Filelist *fl; - Ecdb_Source *parent, *child; + Ewl_Event_Mouse_Down *md; + char *file; + int i = 0; + Ewl_Widget *c; + Ewl_Filelist *fl; + Ecdb_Source *parent, *child; - md = ev; - fl = data; + md = ev; + fl = data; - if (!ewl_mvc_selected_count_get(EWL_MVC(fl->controller))) - return; + if (!ewl_mvc_selected_count_get(EWL_MVC(fl->controller))) + { + return; + } - if (md->clicks != 2) - { - ewl_filelist_selected_files_change_notify(fl); - return; - } + if (md->clicks != 2) + { + ewl_filelist_selected_files_change_notify(fl); + return; + } - c = ewl_container_child_at_recursive_get(EWL_CONTAINER(fl), - md->base.x, md->base.y); + c = ewl_container_child_at_recursive_get(EWL_CONTAINER(fl), md->base.x, + md->base.y); - while (c && c->parent) - { - if (!ewl_widget_internal_is(c)) - { - i = 1; - break; - } - c = c->parent; - } + while (c && c->parent) + { + if (!ewl_widget_internal_is(c)) + { + i = 1; + break; + } + c = c->parent; + } - if (!i) - return; + if (!i) + { + return; + } - file = ecdb_custom_filelist_selected_file_get(fl); + file = ecdb_custom_filelist_selected_file_get(fl); - parent = ewl_widget_data_get(EWL_WIDGET(fl), "source"); - i = 0; - while ((child = parent->children[i])) - { - if ((child->dir) && (!strcmp(child->dst, file))) - { - ecdb_custom_filelist_directory_set(fl, child); - FREE(file); - return; - } - i++; - } - ewl_filelist_selected_files_change_notify(fl); - FREE(file); + parent = ewl_widget_data_get(EWL_WIDGET(fl), "source"); + i = 0; + while ((child = parent->children[i])) + { + if ((child->dir) && (!strcmp(child->dst, file))) + { + ecdb_custom_filelist_directory_set(fl, child); + FREE(file); + return; + } + i++; + } + ewl_filelist_selected_files_change_notify(fl); + FREE(file); } char * ecdb_custom_filelist_selected_file_get(Ewl_Filelist *fl) { - Ewl_Filelist_Directory *data; - Ewl_Filelist_File *file; - Ewl_Selection_Idx *idx; - int i; + Ewl_Filelist_Directory *data; + Ewl_Filelist_File *file; + Ewl_Selection_Idx *idx; + int i; - idx = ewl_mvc_selected_get(EWL_MVC(fl->controller)); - data = EWL_SELECTION(idx)->data; - if (idx->row < data->num_dirs) - file = ecore_list_index_goto(data->dirs, idx->row); - else - { - i = (idx->row - data->num_dirs); - file = ecore_list_index_goto(data->files, i); - } - FREE(idx); - return strdup(file->name); + idx = ewl_mvc_selected_get(EWL_MVC(fl->controller)); + data = EWL_SELECTION(idx)->data; + if (idx->row < data->num_dirs) + { + file = ecore_list_index_goto(data->dirs, idx->row); + } + else + { + i = (idx->row - data->num_dirs); + file = ecore_list_index_goto(data->files, i); + } + + FREE(idx); + return strdup(file->name); } static Ewl_Widget * ecdb_custom_filelist_view_widget_fetch(void *data, unsigned int row __UNUSED__, - unsigned int column) + unsigned int column) { - Ewl_Widget *ret; - const char *img = NULL, *stock, *filename; + Ewl_Widget *ret; + const char *img = NULL, *stock, *filename; - /* Create icon */ - ret = ewl_icon_simple_new(); - ewl_icon_constrain_set(EWL_ICON(ret), EWL_ICON_SIZE_MEDIUM); - ewl_box_orientation_set(EWL_BOX(ret), - EWL_ORIENTATION_HORIZONTAL); - ewl_object_alignment_set(EWL_OBJECT(ret), EWL_FLAG_ALIGN_LEFT); + /* Create icon */ + ret = ewl_icon_simple_new(); + ewl_icon_constrain_set(EWL_ICON(ret), EWL_ICON_SIZE_MEDIUM); + ewl_box_orientation_set(EWL_BOX(ret), EWL_ORIENTATION_HORIZONTAL); + ewl_object_alignment_set(EWL_OBJECT(ret), EWL_FLAG_ALIGN_LEFT); - /* Get and set data into icon */ - if (column == 0) - { - stock = ewl_filelist_stock_icon_get(data); - img = ewl_icon_theme_icon_path_get(stock, EWL_ICON_SIZE_MEDIUM); - if (img) ewl_icon_image_set(EWL_ICON(ret), img, NULL); - - filename = ecore_file_file_get(data); - ewl_icon_label_set(EWL_ICON(ret), filename); - } - else - ewl_icon_label_set(EWL_ICON(ret), data); - - FREE(data); - - return ret; + /* Get and set data into icon */ + if (column == 0) + { + stock = ewl_filelist_stock_icon_get(data); + img = ewl_icon_theme_icon_path_get(stock, EWL_ICON_SIZE_MEDIUM); + if (img) + { + ewl_icon_image_set(EWL_ICON(ret), img, NULL); + } + filename = ecore_file_file_get(data); + ewl_icon_label_set(EWL_ICON(ret), filename); + } + else + { + ewl_icon_label_set(EWL_ICON(ret), data); + } + + FREE(data); + return ret; } diff --git a/ecdb/trunk/src/ecdb_filelist_custom.h b/ecdb/trunk/src/ecdb_filelist_custom.h index 0f4e4b8..d98cc4d 100644 --- a/ecdb/trunk/src/ecdb_filelist_custom.h +++ b/ecdb/trunk/src/ecdb_filelist_custom.h @@ -1,9 +1,9 @@ #ifndef ECDB_FILELIST_CUSTOM_H #define ECDB_FILELIST_CUSTOM_H -void ecdb_custom_filelist_directory_set(Ewl_Filelist *fl, - Ecdb_Source *src); -Ewl_Widget *ecdb_custom_filelist_new(void); -char * ecdb_custom_filelist_selected_file_get(Ewl_Filelist *fl); +void ecdb_custom_filelist_directory_set(Ewl_Filelist *fl, + Ecdb_Source *src); +Ewl_Widget *ecdb_custom_filelist_new(void); +char * ecdb_custom_filelist_selected_file_get(Ewl_Filelist *fl); #endif diff --git a/ecdb/trunk/src/ecdb_gui.c b/ecdb/trunk/src/ecdb_gui.c index 142ed80..f568079 100644 --- a/ecdb/trunk/src/ecdb_gui.c +++ b/ecdb/trunk/src/ecdb_gui.c @@ -1,16 +1,19 @@ +/* + * vim:ts=3:sw=3:sts=3:expandtab + */ #include "ecdb.h" static void ecdb_handle_typebuf(Evas_Object *gui); static void ecdb_cb_controls_focused(void *data, Evas_Object *o, const char *emission, const char *source); static void ecdb_cb_welcome_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source); + const char *emission, const char *source); static void ecdb_cb_erase_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source); + const char *emission, const char *source); static void ecdb_cb_burn_image_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source); + const char *emission, const char *source); static void ecdb_cb_page_hide_finished(void *data, Evas_Object *o, - const char *emission, const char *source); + const char *emission, const char *source); static void ecdb_gui_controls_disable(const char **ids, int n); static void ecdb_gui_controls_enable(const char **ids, int n); static void ecdb_filelist_show(void); @@ -22,643 +25,635 @@ static void ecdb_page_hide(const char *pname); static void ecdb_cb_enter(Ecore_Evas *ee) { - Evas_Object *gui; - gui = evas_object_name_find(ecore_evas_get(ee), "gui"); - edje_object_signal_emit(gui, "ecdb,window,enter", "ecdb"); + Evas_Object *gui; + gui = evas_object_name_find(ecore_evas_get(ee), "gui"); + edje_object_signal_emit(gui, "ecdb,window,enter", "ecdb"); } static void ecdb_cb_leave(Ecore_Evas *ee) { - Evas_Object *gui; - gui = evas_object_name_find(ecore_evas_get(ee), "gui"); - edje_object_signal_emit(gui, "ecdb,window,exit", "ecdb"); + Evas_Object *gui; + gui = evas_object_name_find(ecore_evas_get(ee), "gui"); + edje_object_signal_emit(gui, "ecdb,window,exit", "ecdb"); } static void ecdb_cb_resize(Ecore_Evas *ee) { - int w, h; - Evas_Object *gui; + int w, h; + Evas_Object *gui; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - gui = evas_object_name_find(ecore_evas_get(ee), "gui"); - evas_object_resize(gui, w, h); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + gui = evas_object_name_find(ecore_evas_get(ee), "gui"); + evas_object_resize(gui, w, h); } static void _cb_filelist_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *eo, - void *ev_data __UNUSED__) + void *ev_data __UNUSED__) { - Evas_Object *gui = data; - evas_object_focus_set(eo, TRUE); + Evas_Object *gui = data; + evas_object_focus_set(eo, TRUE); - edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", - "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", NULL); + edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", "ecdb"); + edje_object_part_text_set(gui, "filelist_overlay_text", NULL); } static void _cb_filelist_key_down(void *data, Evas *e __UNUSED__, - Evas_Object *eo __UNUSED__, void *ev_data) + Evas_Object *eo __UNUSED__, void *ev_data) { - Evas_Event_Key_Down *ek = ev_data; - Evas_Object *gui = data; + Evas_Event_Key_Down *ek = ev_data; + Evas_Object *gui = data; - if (!strcmp(ek->key, "Escape")) - { - edje_object_signal_emit(gui, - "ecdb,filelist_overlay,deactivate", "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", NULL); - } + if (!strcmp(ek->key, "Escape")) + { + edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", "ecdb"); + edje_object_part_text_set(gui, "filelist_overlay_text", NULL); + } - else if (!strcmp(ek->key, "Return")) - { - ecdb_handle_typebuf(gui); - } + else if (!strcmp(ek->key, "Return")) + { + ecdb_handle_typebuf(gui); + } - else if (!strcmp(ek->key, "BackSpace")) - { - int len; - const char *t; - char *text; + else if (!strcmp(ek->key, "BackSpace")) + { + int len; + const char *t; + char *text; - t = edje_object_part_text_get(gui, "filelist_overlay_text"); - text = (t) ? (strdup(t)) : NULL; + t = edje_object_part_text_get(gui, "filelist_overlay_text"); + text = (t) ? (strdup(t)) : NULL; - if ((!text) || (!*text)) return; + if ((!text) || (!*text)) return; - len = strlen(text); - text = realloc(text, len); - text[len - 1] = '\0'; + len = strlen(text); + text = realloc(text, len); + text[len - 1] = '\0'; - if (len == 1) - edje_object_signal_emit(gui, - "ecdb,filelist_overlay,deactivate", - "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", text); - FREE(text); - } + if (len == 1) + { + edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", + "ecdb"); + } + edje_object_part_text_set(gui, "filelist_overlay_text", text); + FREE(text); + } - else - { - int len; - const char *t, *append; - char *text; + else + { + int len; + const char *t, *append; + char *text; - t = edje_object_part_text_get(gui, "filelist_overlay_text"); + t = edje_object_part_text_get(gui, "filelist_overlay_text"); - text = (t) ? (strdup(t)) : NULL; + text = (t) ? (strdup(t)) : NULL; - if ((text) && (strlen(text) >= PATH_MAX)) - return; + if ((text) && (strlen(text) >= PATH_MAX)) + return; - if ((ek->string) && (*ek->string) && (!ek->string[1])) - append = ek->string; - else if ((ek->keyname) && (*ek->keyname) && (!ek->key[1])) - append = ek->keyname; - else - { - if (text) - free(text); - return; - } + if ((ek->string) && (*ek->string) && (!ek->string[1])) + { + append = ek->string; + } + else if ((ek->keyname) && (*ek->keyname) && (!ek->key[1])) + { + append = ek->keyname; + } + else + { + if (text) + free(text); + return; + } - if (!text) - text = strdup(append); - else - { - len = strlen(text) + 2; - text = realloc(text, len); - ecore_strlcat(text, append, len); - } - - /* Avoid sending the same signal twice... seems to skip the - * transition in that case - */ - if (strlen(text) == 1) - edje_object_signal_emit(gui, - "ecdb,filelist_overlay,activate", - "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", text); - - free(text); - } + if (!text) + { + text = strdup(append); + } + else + { + len = strlen(text) + 2; + text = realloc(text, len); + ecore_strlcat(text, append, len); + } + + /* Avoid sending the same signal twice... seems to skip the + * transition in that case + */ + if (strlen(text) == 1) + { + edje_object_signal_emit(gui, "ecdb,filelist_overlay,activate", "ecdb"); + } + edje_object_part_text_set(gui, "filelist_overlay_text", text); + FREE(text); + } } int ecdb_create_main_gui(void) { - Evas_Object *gui; - Evas_Coord mw, mh; + Evas_Object *gui; + Evas_Coord mw, mh; - em->main_win_ee = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); + em->main_win_ee = ecore_evas_software_x11_new(0, 0, 0, 0, 255, 255); - if (!em->main_win_ee) - { - printf("Cannot create main window!\n"); - return FALSE; - } + if (!em->main_win_ee) + { + printf("Cannot create main window!\n"); + return FALSE; + } - ecore_evas_title_set(em->main_win_ee, "ECDB"); - ecore_evas_name_class_set(em->main_win_ee, "ECDB", "ECDB"); - ecore_evas_avoid_damage_set(em->main_win_ee, 1); - ecore_x_dnd_aware_set(ecore_evas_software_x11_window_get - (em->main_win_ee), 1); - ecore_x_dnd_type_set(ecore_evas_software_x11_window_get - (em->main_win_ee), "*", 1); + ecore_evas_title_set(em->main_win_ee, "ECDB"); + ecore_evas_name_class_set(em->main_win_ee, "ECDB", "ECDB"); + ecore_evas_avoid_damage_set(em->main_win_ee, 1); + ecore_x_dnd_aware_set(ecore_evas_software_x11_window_get(em->main_win_ee), + 1); + ecore_x_dnd_type_set(ecore_evas_software_x11_window_get(em->main_win_ee), + "*", 1); - ecore_evas_callback_delete_request_set(em->main_win_ee, ecdb_shutdown); - ecore_evas_callback_destroy_set(em->main_win_ee, ecdb_shutdown); + ecore_evas_callback_delete_request_set(em->main_win_ee, ecdb_shutdown); + ecore_evas_callback_destroy_set(em->main_win_ee, ecdb_shutdown); - ecore_evas_callback_mouse_in_set(em->main_win_ee, ecdb_cb_enter); - ecore_evas_callback_mouse_out_set(em->main_win_ee, ecdb_cb_leave); - ecore_evas_callback_resize_set(em->main_win_ee, ecdb_cb_resize); + ecore_evas_callback_mouse_in_set(em->main_win_ee, ecdb_cb_enter); + ecore_evas_callback_mouse_out_set(em->main_win_ee, ecdb_cb_leave); + ecore_evas_callback_resize_set(em->main_win_ee, ecdb_cb_resize); - edje_frametime_set(1.0 / 60.0); - ecore_evas_show(em->main_win_ee); + edje_frametime_set(1.0 / 60.0); + ecore_evas_show(em->main_win_ee); - /* Make this configurable at some point */ - ecdb_set_main_theme(NULL); + /* Make this configurable at some point */ + ecdb_set_main_theme(NULL); - gui = edje_object_add(ecore_evas_get(em->main_win_ee)); - edje_object_file_set(gui, em->theme_path, "ecdb/window"); - edje_object_size_min_get(gui, &mw, &mh); - if (mw <= 0) mw = 400; - if (mh <= 0) mh = 300; - evas_object_resize(gui, mw, mh); - ecore_evas_resize(em->main_win_ee, mw, mh); - ecore_evas_size_min_set(em->main_win_ee, mw, mh); - evas_object_name_set(gui, "gui"); - evas_object_move(gui, 0, 0); - evas_object_show(gui); + gui = edje_object_add(ecore_evas_get(em->main_win_ee)); + edje_object_file_set(gui, em->theme_path, "ecdb/window"); + edje_object_size_min_get(gui, &mw, &mh); + if (mw <= 0) mw = 400; + if (mh <= 0) mh = 300; + evas_object_resize(gui, mw, mh); + ecore_evas_resize(em->main_win_ee, mw, mh); + ecore_evas_size_min_set(em->main_win_ee, mw, mh); + evas_object_name_set(gui, "gui"); + evas_object_move(gui, 0, 0); + evas_object_show(gui); - ecdb_welcome_page_show(); - return TRUE; + ecdb_welcome_page_show(); + return TRUE; } /* This needs some work. Where should user themes go? */ void ecdb_set_main_theme(const char *theme_name) { - if (!theme_name) - { - snprintf(em->theme_path, PATH_MAX, "%s/%s", PACKAGE_DATA_DIR, - "themes/default.edj"); - evas_font_path_append(ecore_evas_get(em->main_win_ee), - PACKAGE_DATA_DIR"/font"); - } + if (!theme_name) + { + snprintf(em->theme_path, PATH_MAX, "%s/%s", PACKAGE_DATA_DIR, + "themes/default.edj"); + evas_font_path_append(ecore_evas_get(em->main_win_ee), + PACKAGE_DATA_DIR"/font"); + } } void ecdb_handle_typebuf(Evas_Object *gui) { - Ewl_Widget *fl; - Ewl_Filelist_Filter *filter; - const char *ext; + Ewl_Widget *fl; + Ewl_Filelist_Filter *filter; + const char *ext; - if (!(ext = edje_object_part_text_get(gui, - "filelist_overlay_text"))) - return; - - fl = ewl_widget_name_find("main_filelist"); - - /* Check for a 'cd' first */ - if (!ecdb_match_keyword(ext, "cd", 2)) - { - char *dir; + if (!(ext = edje_object_part_text_get(gui, "filelist_overlay_text"))) + { + return; + } + + fl = ewl_widget_name_find("main_filelist"); + + /* Check for a 'cd' first */ + if (!ecdb_match_keyword(ext, "cd", 2)) + { + char *dir; - /* What to do about multi-word directories? */ - dir = ecdb_strip_string(ext); + /* What to do about multi-word directories? */ + dir = ecdb_strip_string(ext); - if ((dir) && (dir[0] == '/')) - { - if (ecore_file_exists(dir)) - ewl_filelist_directory_set(EWL_FILELIST(fl), - dir); - } - else if (dir[0] == '~') - { - char path[PATH_MAX]; + if ((dir) && (dir[0] == '/')) + { + if (ecore_file_exists(dir)) + { + ewl_filelist_directory_set(EWL_FILELIST(fl), dir); + } + } + else if (dir[0] == '~') + { + char path[PATH_MAX]; - snprintf(path, PATH_MAX, "%s%s", getenv("HOME"), - &dir[1]); + snprintf(path, PATH_MAX, "%s%s", getenv("HOME"), &dir[1]); - if (ecore_file_exists(path)) - ewl_filelist_directory_set(EWL_FILELIST(fl), - path); - } - else if (dir) - { - /* Try to concate it to our current directory */ - char path[PATH_MAX]; + if (ecore_file_exists(path)) + { + ewl_filelist_directory_set(EWL_FILELIST(fl), path); + } + } + else if (dir) + { + /* Try to concate it to our current directory */ + char path[PATH_MAX]; - snprintf(path, PATH_MAX, "%s/%s", - ewl_filelist_directory_get - (EWL_FILELIST(fl)), dir); + snprintf(path, PATH_MAX, "%s/%s", ewl_filelist_directory_get + (EWL_FILELIST(fl)), dir); - if (ecore_file_exists(path)) - ewl_filelist_directory_set(EWL_FILELIST(fl), - path); - } + if (ecore_file_exists(path)) + { + ewl_filelist_directory_set(EWL_FILELIST(fl), path); + } + } - if (dir) - free(dir); + if (dir) + { + FREE(dir); + } - edje_object_signal_emit(gui, "ecdb,filelist_overlay," - "deactivate", "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", - NULL); - return; - } - else if (!ecdb_match_keyword(ext, "exit", 4)) - { - /* This creates an ewl error... */ - ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, NULL, NULL, NULL); - return; - } - - filter = ewl_filelist_filter_get(EWL_FILELIST(fl)); - if (!filter) - filter = calloc(sizeof(Ewl_Filelist_Filter), 1); - - if (filter->extension) - { - if (strcmp(filter->extension, ext)) - { - FREE(filter->extension); - } - else - return; - } - - filter->extension = strdup(ext); - ewl_filelist_filter_set(EWL_FILELIST(fl), filter); - ewl_filelist_refresh(EWL_FILELIST(fl)); - edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", - "ecdb"); - edje_object_part_text_set(gui, "filelist_overlay_text", NULL); + edje_object_signal_emit(gui, "deactivate", "ecdb"); + edje_object_part_text_set(gui, "filelist_overlay_text", NULL); + return; + } + else if (!ecdb_match_keyword(ext, "exit", 4)) + { + /* This creates an ewl error... */ + ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, NULL, NULL, NULL); + return; + } + + filter = ewl_filelist_filter_get(EWL_FILELIST(fl)); + if (!filter) + { + filter = calloc(sizeof(Ewl_Filelist_Filter), 1); + } + + if (filter->extension) + { + if (strcmp(filter->extension, ext)) + { + FREE(filter->extension); + } + else + { + return; + } + } + + filter->extension = strdup(ext); + ewl_filelist_filter_set(EWL_FILELIST(fl), filter); + ewl_filelist_refresh(EWL_FILELIST(fl)); + edje_object_signal_emit(gui, "ecdb,filelist_overlay,deactivate", "ecdb"); + edje_object_part_text_set(gui, "filelist_overlay_text", NULL); } static void -ecdb_cb_controls_focused(void *data, Evas_Object *o, - const char *emission, const char *source) +ecdb_cb_controls_focused(void *data, Evas_Object *o, const char *emission, + const char *source) { - static char *old_source; - Evas_Object *unsel; + static char *old_source; + Evas_Object *unsel; - if ((old_source) && (strcmp(old_source, source))) - { - unsel = evas_object_name_find(ecore_evas_get(em->main_win_ee), - old_source); - edje_object_signal_emit(unsel, "ecdb,focus,out", "ecdb"); - free(old_source); - old_source = strdup(source); - } - else if (!old_source) - old_source = strdup(source); + if ((old_source) && (strcmp(old_source, source))) + { + unsel = evas_object_name_find(ecore_evas_get(em->main_win_ee), + old_source); + edje_object_signal_emit(unsel, "ecdb,focus,out", "ecdb"); + FREE(old_source); + old_source = strdup(source); + } + else if (!old_source) + { + old_source = strdup(source); + } } static void ecdb_cb_welcome_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source) + const char *emission, const char *source) { - Evas_Object *swallow, *gui; + Evas_Object *swallow, *gui; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "main_filelist"); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "main_filelist"); - /* Actually get this to do some stuff, instead of just for show like - * now - */ - if (!strcmp(source, "ecdb/burn_data")) - ecdb_filelist_show(); - else if (!strcmp(source, "ecdb/erase")) - { - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "welcome_page"); - edje_object_signal_emit(swallow, "ecdb,welcome_page,hide", - "ecdb"); - ecdb_erase_page_show(); - } - else if (!strcmp(source, "ecdb/burn_image")) - { - ecdb_filelist_show(); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "welcome_page"); - edje_object_signal_emit(swallow, "ecdb,welcome_page,hide", - "ecdb"); - ecdb_burn_image_page_show(); - } - else if (swallow) - edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); + /* Actually get this to do some stuff, instead of just for show like + * now + */ + if (!strcmp(source, "ecdb/burn_data")) + { + ecdb_filelist_show(); + } + else if (!strcmp(source, "ecdb/erase")) + { + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "welcome_page"); + edje_object_signal_emit(swallow, "ecdb,welcome_page,hide", "ecdb"); + ecdb_erase_page_show(); + } + else if (!strcmp(source, "ecdb/burn_image")) + { + ecdb_filelist_show(); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "welcome_page"); + edje_object_signal_emit(swallow, "ecdb,welcome_page,hide", "ecdb"); + ecdb_burn_image_page_show(); + } + else if (swallow) + { + edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); + } - printf("Action: %s\n", source); + printf("Action: %s\n", source); } static void ecdb_cb_erase_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source) + const char *emission, const char *source) { - Evas_Object *swallow, *gui; - static int speed = 0; + Evas_Object *swallow, *gui; + static int speed = 0; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "erase_page"); - if (!strcmp(source, "ecdb/erase/return")) - { - char *signal; + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "erase_page"); + if (!strcmp(source, "ecdb/erase/return")) + { + char *signal; - edje_object_part_text_set(swallow, "progress_text", - "Begin Erase"); - edje_object_part_text_set(swallow, "progress_percent", "0%"); - signal = evas_object_data_get(swallow, "hide_signal"); - edje_object_signal_emit(swallow, signal, "ecdb"); - ecdb_welcome_page_show(); - } - else if (!strcmp(source, "ecdb/erase/begin")) - { - Ecdb_Erase_Project *proj; - proj = ecdb_erase_project_new(); - char buf[1024]; + edje_object_part_text_set(swallow, "progress_text", "Begin Erase"); + edje_object_part_text_set(swallow, "progress_percent", "0%"); + signal = evas_object_data_get(swallow, "hide_signal"); + edje_object_signal_emit(swallow, signal, "ecdb"); + ecdb_welcome_page_show(); + } + else if (!strcmp(source, "ecdb/erase/begin")) + { + Ecdb_Erase_Project *proj; + proj = ecdb_erase_project_new(); + char buf[1024]; - snprintf(buf, sizeof(buf), "Commencing..."); - edje_object_part_text_set(swallow, "progress_text", buf); - if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) - { - printf("Couldn't grab drive!\n"); - ecdb_erase_project_destroy(proj); - edje_object_part_text_set(swallow, "progress_text", - "Couldn't grab the drive!"); - return; - } + snprintf(buf, sizeof(buf), "Commencing..."); + edje_object_part_text_set(swallow, "progress_text", buf); + if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) + { + printf("Couldn't grab drive!\n"); + ecdb_erase_project_destroy(proj); + edje_object_part_text_set(swallow, "progress_text", + "Couldn't grab the drive!"); + return; + } - proj->quick = speed; - if (!ecdb_erase_disc(proj)) - { - Ecdb_Project *p = ECDB_PROJECT(proj); + proj->quick = speed; + if (!ecdb_erase_disc(proj)) + { + Ecdb_Project *p = ECDB_PROJECT(proj); - printf("Disc not erasable!\n"); - snprintf(buf, sizeof(buf), "Disc not erasable!"); - edje_object_part_text_set(swallow, "progress_text", buf); - burn_drive_release(p->drive->tangible[0].drive, 0); - burn_drive_info_free(p->drive->tangible); - ecdb_erase_project_destroy(proj); - return; - } + printf("Disc not erasable!\n"); + snprintf(buf, sizeof(buf), "Disc not erasable!"); + edje_object_part_text_set(swallow, "progress_text", buf); + burn_drive_release(p->drive->tangible[0].drive, 0); + burn_drive_info_free(p->drive->tangible); + ecdb_erase_project_destroy(proj); + return; + } - speed = 0; - - edje_object_signal_emit(swallow, "ecdb,erase,start", "ecdb"); - const char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", - "ecdb/erase/speed"}; - ecdb_gui_controls_disable(ids, 3); - } - else if (!strcmp(source, "ecdb/erase/speed")) - { - speed = !speed; - printf("Burn speed: %d\n", speed); - } + speed = 0; + edje_object_signal_emit(swallow, "ecdb,erase,start", "ecdb"); + const char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", + "ecdb/erase/speed"}; + ecdb_gui_controls_disable(ids, 3); + } + else if (!strcmp(source, "ecdb/erase/speed")) + { + speed = !speed; + printf("Burn speed: %d\n", speed); + } } static void ecdb_cb_burn_image_page_buttons_clicked(void *data, Evas_Object *o, - const char *emission, const char *source) + const char *emission, const char *source) { - Evas_Object *swallow, *gui; + Evas_Object *swallow, *gui; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "burn_image_page"); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "burn_image_page"); - if (!strcmp(source, "ecdb/burn_image/return")) - { - char *signal; + if (!strcmp(source, "ecdb/burn_image/return")) + { + char *signal; - edje_object_part_text_set(swallow, "progress_text", - "Begin Burn"); - edje_object_part_text_set(swallow, "progress_percent", "0%"); - signal = evas_object_data_get(swallow, "hide_signal"); - edje_object_signal_emit(swallow, signal, "ecdb"); - ecdb_welcome_page_show(); - - /* Hide the filelist to be nice */ - edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); - } - else if (!strcmp(source, "ecdb/burn_image/begin")) - { - Ecdb_Burn_Project *proj; - Evas_Object *entry; - Ecdb_Source *iso_file; - Efreet_Uri *uri; - const char *file; - char *sanitized_file; - char buf[1024]; - Ecdb_Burn_Result burn_result; + edje_object_part_text_set(swallow, "progress_text", "Begin Burn"); + edje_object_part_text_set(swallow, "progress_percent", "0%"); + signal = evas_object_data_get(swallow, "hide_signal"); + edje_object_signal_emit(swallow, signal, "ecdb"); + ecdb_welcome_page_show(); + + /* Hide the filelist to be nice */ + edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); + } + else if (!strcmp(source, "ecdb/burn_image/begin")) + { + Ecdb_Burn_Project *proj; + Evas_Object *entry; + Ecdb_Source *iso_file; + const char *file; + char *sanitized_file; + char buf[1024]; + Ecdb_Burn_Result burn_result; - proj = ecdb_burn_project_new(); - ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_IMAGE_PROJECT); - entry = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "ecdb/burn_image/file"); - file = edje_object_part_text_get(entry, "label"); + proj = ecdb_burn_project_new(); + ecdb_project_type_set(ECDB_PROJECT(proj), ECDB_IMAGE_PROJECT); + entry = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "ecdb/burn_image/file"); + file = edje_object_part_text_get(entry, "label"); - //Textblock returns a
at the end, so chop that off - sanitized_file = alloca(sizeof(char) * (strlen(file) - 3)); - sanitized_file[0] = '\0'; - ecore_strlcpy(sanitized_file, file, strlen(file) - 3); + //Textblock returns a
at the end, so chop that off + sanitized_file = alloca(sizeof(char) * (strlen(file) - 3)); + sanitized_file[0] = '\0'; + ecore_strlcpy(sanitized_file, file, strlen(file) - 3); - uri = efreet_uri_decode(sanitized_file); - iso_file = ecdb_source_new(); - ecdb_source_data_set(iso_file, uri->path); - ecdb_source_child_append(proj->files, iso_file); - efreet_uri_free(uri); + iso_file = ecdb_source_new(); + ecdb_source_data_set(iso_file, sanitized_file); + ecdb_source_child_append(proj->files, iso_file); - snprintf(buf, sizeof(buf), "Commencing..."); - edje_object_part_text_set(swallow, "progress_text", buf); - if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) - { - printf("Couldn't grab drive!\n"); - ecdb_burn_project_destroy(proj); - edje_object_part_text_set(swallow, "progress_text", - "Couldn't grab the drive!"); - return; - } + snprintf(buf, sizeof(buf), "Commencing..."); + edje_object_part_text_set(swallow, "progress_text", buf); + if (!ecdb_aquire_drive(ECDB_PROJECT(proj), 0)) + { + printf("Couldn't grab drive!\n"); + ecdb_burn_project_destroy(proj); + edje_object_part_text_set(swallow, "progress_text", + "Couldn't grab the drive!"); + return; + } - burn_result = ecdb_burn_project(proj); - switch (burn_result) - { - case ECDB_ERROR_NONE: - edje_object_signal_emit(gui, - "ecdb,filelist,hide", "ecdb"); - edje_object_signal_emit(swallow, - "ecdb,burn_image,start", - "ecdb"); - const char *ids[] = {"ecdb/burn_image/return", - "ecdb/burn_image/begin", - "ecdb/burn_image/file"}; - ecdb_gui_controls_disable(ids, 3); - return; + burn_result = ecdb_burn_project(proj); + switch (burn_result) + { + case ECDB_ERROR_NONE: + edje_object_signal_emit(gui, + "ecdb,filelist,hide", "ecdb"); + edje_object_signal_emit(swallow, "ecdb,burn_image,start", "ecdb"); + const char *ids[] = {"ecdb/burn_image/return", + "ecdb/burn_image/begin", + "ecdb/burn_image/file"}; + ecdb_gui_controls_disable(ids, 3); + return; - case ECDB_ERROR_IMAGE_CREATE: - snprintf(buf, sizeof(buf), "Invalid file!"); - break; + case ECDB_ERROR_IMAGE_CREATE: + snprintf(buf, sizeof(buf), "Invalid file!"); + break; - case ECDB_ERROR_SOURCE_ATTACH: - snprintf(buf, sizeof(buf), - "Couldn't attach source data!"); - break; + case ECDB_ERROR_SOURCE_ATTACH: + snprintf(buf, sizeof(buf), "Couldn't attach source data!"); + break; - case ECDB_ERROR_WRITE_MODE: - snprintf(buf, sizeof(buf), - "No suitable burn mode!"); - break; + case ECDB_ERROR_WRITE_MODE: + snprintf(buf, sizeof(buf), "No suitable burn mode!"); + break; - default: - snprintf(buf, sizeof(buf), "Unknown error :-("); - } - - edje_object_part_text_set(swallow, "progress_text", buf); - Ecdb_Project *p = ECDB_PROJECT(proj); - burn_drive_release(p->drive->tangible[0].drive, 1); - burn_drive_info_free(p->drive->tangible); - ecdb_burn_project_destroy(proj); - } - else if (!strcmp(source, "ecdb/burn_image/file")) - { - evas_object_focus_set(o, 1); - } + default: + snprintf(buf, sizeof(buf), "Unknown error :-("); + } + + edje_object_part_text_set(swallow, "progress_text", buf); + Ecdb_Project *p = ECDB_PROJECT(proj); + burn_drive_release(p->drive->tangible[0].drive, 1); + burn_drive_info_free(p->drive->tangible); + ecdb_burn_project_destroy(proj); + } + else if (!strcmp(source, "ecdb/burn_image/file")) + { + evas_object_focus_set(o, 1); + } } static void ecdb_welcome_page_show(void) { - Evas_Object *gui, *swallow; + Evas_Object *gui, *swallow; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "welcome_page"); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "welcome_page"); - if (!swallow) - { - Evas_Coord x, y, w, h; + if (!swallow) + { + Evas_Coord x, y, w, h; - swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); - evas_object_name_set(swallow, "welcome_page"); - edje_object_file_set(swallow, em->theme_path, - "ecdb/welcome_page"); - edje_object_part_geometry_get(gui, "active_area", - &x, &y, &w, &h); - evas_object_move(swallow, x, y); - evas_object_resize(swallow, w, h); - edje_object_part_swallow(gui, "action_area", swallow); - edje_object_signal_callback_add(swallow, "mouse,down,1", - "ecdb/*", ecdb_cb_controls_focused, - NULL); - edje_object_signal_callback_add(swallow, "mouse,clicked,1", - "ecdb/*", ecdb_cb_welcome_page_buttons_clicked, - NULL); - edje_object_signal_callback_add(swallow, "hide,finished", - "welcome_page", ecdb_cb_page_hide_finished, - NULL); - evas_object_show(swallow); + swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); + evas_object_name_set(swallow, "welcome_page"); + edje_object_file_set(swallow, em->theme_path, "ecdb/welcome_page"); + edje_object_part_geometry_get(gui, "active_area", &x, &y, &w, &h); + evas_object_move(swallow, x, y); + evas_object_resize(swallow, w, h); + edje_object_part_swallow(gui, "action_area", swallow); + edje_object_signal_callback_add(swallow, "mouse,down,1", "ecdb/*", + ecdb_cb_controls_focused, NULL); + edje_object_signal_callback_add(swallow, "mouse,clicked,1", "ecdb/*", + ecdb_cb_welcome_page_buttons_clicked, NULL); + edje_object_signal_callback_add(swallow, "hide,finished", "welcome_page", + ecdb_cb_page_hide_finished, NULL); + evas_object_show(swallow); - Evas_Object *b; - int i; - char *labels[] = {"Burn Data CD", "Burn Audio CD", - "Burn Image", "Erase Re-writable Disc"}; - char *ids[] = {"ecdb/burn_data", "ecdb/burn_audio", - "ecdb/burn_image", "ecdb/erase"}; - for (i = 0; i < 4; i++) - { - b = edje_object_add(ecore_evas_get(em->main_win_ee)); - evas_object_name_set(b, ids[i]); - edje_object_file_set(b, em->theme_path, "ecdb/button"); - edje_object_part_geometry_get(swallow, ids[i], &x, - &y, &w, &h); - edje_object_part_text_set(b, "label", labels[i]); - evas_object_move(b, x, y); - evas_object_resize(b, w, h); - edje_object_part_swallow(swallow, ids[i], b); - evas_object_show(b); - - /* Place this after */ - ecdb_button_icon_swallow(ecore_evas_get - (em->main_win_ee), b, ids[i]); - } - } + Evas_Object *b; + int i; + char *labels[] = {"Burn Data CD", "Burn Audio CD", "Burn Image", + "Erase Re-writable Disc"}; + char *ids[] = {"ecdb/burn_data", "ecdb/burn_audio", "ecdb/burn_image", + "ecdb/erase"}; + for (i = 0; i < 4; i++) + { + b = edje_object_add(ecore_evas_get(em->main_win_ee)); + evas_object_name_set(b, ids[i]); + edje_object_file_set(b, em->theme_path, "ecdb/button"); + edje_object_part_geometry_get(swallow, ids[i], &x, &y, &w, &h); + edje_object_part_text_set(b, "label", labels[i]); + evas_object_move(b, x, y); + evas_object_resize(b, w, h); + edje_object_part_swallow(swallow, ids[i], b); + evas_object_show(b); + + /* Place this after */ + ecdb_button_icon_swallow(ecore_evas_get(em->main_win_ee), b, ids[i]); + } + } - else if (edje_object_part_swallow_get(gui, "action_area") != swallow) - { - /* All that is needed here? */ - edje_object_part_swallow(gui, "action_area", swallow); - evas_object_show(swallow); - } + else if (edje_object_part_swallow_get(gui, "action_area") != swallow) + { + /* All that is needed here? */ + edje_object_part_swallow(gui, "action_area", swallow); + evas_object_show(swallow); + } - edje_object_signal_emit(gui, "ecdb,welcome_page,show", "ecdb"); - edje_object_signal_emit(swallow, "ecdb,welcome_page,show", "ecdb"); + edje_object_signal_emit(gui, "ecdb,welcome_page,show", "ecdb"); + edje_object_signal_emit(swallow, "ecdb,welcome_page,show", "ecdb"); } static void ecdb_filelist_show(void) { - Evas_Object *gui, *swallow; + Evas_Object *gui, *swallow; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "main_filelist"); - - if (!swallow) - { - Evas_Coord x, y, w, h; - Ewl_Widget *embed, *filelist; + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "main_filelist"); + + if (!swallow) + { + Evas_Coord x, y, w, h; + Ewl_Widget *embed, *filelist; - embed = ewl_embed_new(); - ewl_object_fill_policy_set(EWL_OBJECT(embed), - EWL_FLAG_FILL_ALL); - swallow = ewl_embed_canvas_set(EWL_EMBED(embed), - ecore_evas_get(em->main_win_ee), - (void *)(long)ecore_evas_software_x11_window_get - (em->main_win_ee)); - ewl_embed_focus_set(EWL_EMBED(embed), TRUE); - ewl_widget_show(embed); + embed = ewl_embed_new(); + ewl_object_fill_policy_set(EWL_OBJECT(embed), EWL_FLAG_FILL_ALL); + swallow = ewl_embed_canvas_set(EWL_EMBED(embed), + ecore_evas_get(em->main_win_ee), + (void *)(long)ecore_evas_software_x11_window_get(em->main_win_ee)); + ewl_embed_focus_set(EWL_EMBED(embed), TRUE); + ewl_widget_show(embed); - filelist = ewl_filelist_new(); - ewl_widget_name_set(EWL_WIDGET(filelist), "main_filelist"); - ewl_container_child_append(EWL_CONTAINER(embed), filelist); - ewl_filelist_directory_set(EWL_FILELIST(filelist), - getenv("HOME")); - ewl_widget_show(filelist); - - edje_object_part_geometry_get(gui, "filelist", &x, &y, &w, &h); - evas_object_name_set(swallow, "main_filelist"); - evas_object_move(swallow, x, y); - evas_object_resize(swallow, w, h); - edje_object_part_swallow(gui, "filelist", swallow); - evas_object_event_callback_add(swallow, - EVAS_CALLBACK_MOUSE_DOWN, - _cb_filelist_mouse_down, gui); - evas_object_event_callback_add(swallow, EVAS_CALLBACK_KEY_DOWN, - _cb_filelist_key_down, gui); - evas_object_show(swallow); - } + filelist = ewl_filelist_new(); + ewl_widget_name_set(EWL_WIDGET(filelist), "main_filelist"); + ewl_container_child_append(EWL_CONTAINER(embed), filelist); + ewl_filelist_directory_set(EWL_FILELIST(filelist), getenv("HOME")); + ewl_widget_show(filelist); + + edje_object_part_geometry_get(gui, "filelist", &x, &y, &w, &h); + evas_object_name_set(swallow, "main_filelist"); + evas_object_move(swallow, x, y); + evas_object_resize(swallow, w, h); + edje_object_part_swallow(gui, "filelist", swallow); + evas_object_event_callback_add(swallow, EVAS_CALLBACK_MOUSE_DOWN, + _cb_filelist_mouse_down, gui); + evas_object_event_callback_add(swallow, EVAS_CALLBACK_KEY_DOWN, + _cb_filelist_key_down, gui); + evas_object_show(swallow); + } - /* Assume here that it is the active projects job to hide itself and - * call this show function - */ - else if (edje_object_part_swallow_get(gui, "filelist") != swallow) - { - /* Is this all that is neccessary? */ - edje_object_part_swallow(gui, "filelist", swallow); - evas_object_show(swallow); - } + /* Assume here that it is the active projects job to hide itself and + * call this show function + */ + else if (edje_object_part_swallow_get(gui, "filelist") != swallow) + { + /* Is this all that is neccessary? */ + edje_object_part_swallow(gui, "filelist", swallow); + evas_object_show(swallow); + } - edje_object_signal_emit(gui, "ecdb,filelist,visible", "ecdb"); - edje_object_signal_emit(swallow, "ecdb,filelist,visible", "ecdb"); + edje_object_signal_emit(gui, "ecdb,filelist,visible", "ecdb"); + edje_object_signal_emit(swallow, "ecdb,filelist,visible", "ecdb"); } @@ -668,235 +663,223 @@ ecdb_filelist_show(void) static void ecdb_page_hide(const char *pname) { - Evas_Object *swallow, *gui; + Evas_Object *swallow, *gui; - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), pname); - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), pname); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - if (gui) - { - edje_object_part_unswallow(gui, swallow); - evas_object_hide(swallow); - } + if (gui) + { + edje_object_part_unswallow(gui, swallow); + evas_object_hide(swallow); + } } static void ecdb_erase_page_show(void) { - Evas_Object *swallow, *gui; + Evas_Object *swallow, *gui; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "erase_page"); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "erase_page"); - /* Hide the filelist as it isn't needed to erase a disc */ - edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); + /* Hide the filelist as it isn't needed to erase a disc */ + edje_object_signal_emit(gui, "ecdb,filelist,hide", "ecdb"); - if (!swallow) - { - Evas_Coord x, y, w, h; + if (!swallow) + { + Evas_Coord x, y, w, h; - swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); - edje_object_file_set(swallow, em->theme_path, - "ecdb/erase_page"); - evas_object_name_set(swallow, "erase_page"); - evas_object_data_set(swallow, "hide_signal", - "ecdb,erase_page,hide"); - edje_object_part_geometry_get(gui, "active_area", - &x, &y, &w, &h); - evas_object_move(swallow, x, y); - evas_object_resize(swallow, w, h); - edje_object_part_swallow(gui, "action_area", swallow); - evas_object_show(swallow); - edje_object_signal_callback_add(swallow, "mouse,down,1", - "ecdb/*", ecdb_cb_controls_focused, - NULL); - edje_object_signal_callback_add(swallow, "mouse,clicked,1", - "ecdb/erase/*", - ecdb_cb_erase_page_buttons_clicked, NULL); - edje_object_signal_callback_add(swallow, "hide,finished", - "erase_page", ecdb_cb_page_hide_finished, - NULL); - evas_object_show(swallow); + swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); + edje_object_file_set(swallow, em->theme_path, "ecdb/erase_page"); + evas_object_name_set(swallow, "erase_page"); + evas_object_data_set(swallow, "hide_signal", "ecdb,erase_page,hide"); + edje_object_part_geometry_get(gui, "active_area", &x, &y, &w, &h); + evas_object_move(swallow, x, y); + evas_object_resize(swallow, w, h); + edje_object_part_swallow(gui, "action_area", swallow); + evas_object_show(swallow); + edje_object_signal_callback_add(swallow, "mouse,down,1", "ecdb/*", + ecdb_cb_controls_focused, NULL); + edje_object_signal_callback_add(swallow, "mouse,clicked,1", + "ecdb/erase/*", + ecdb_cb_erase_page_buttons_clicked, NULL); + edje_object_signal_callback_add(swallow, "hide,finished", "erase_page", + ecdb_cb_page_hide_finished, NULL); + evas_object_show(swallow); - int i; - char *labels[] = {"Return to Main Page", "Start Erase", - "Quick Erase"}; - char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", - "ecdb/erase/speed"}; - char *wtype[] = {"ecdb/button", "ecdb/button", "ecdb/check"}; + int i; + char *labels[] = {"Return to Main Page", "Start Erase", + "Quick Erase"}; + char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", + "ecdb/erase/speed"}; + char *wtype[] = {"ecdb/button", "ecdb/button", "ecdb/check"}; - for (i = 0; i < 3; i++) - { - Evas_Object *b; - b = edje_object_add(ecore_evas_get(em->main_win_ee)); - evas_object_name_set(b, ids[i]); - edje_object_file_set(b, em->theme_path, wtype[i]); - edje_object_part_geometry_get(swallow, ids[i], &x, - &y, &w, &h); - evas_object_move(b, x, y); - evas_object_resize(b, w, h); - edje_object_part_text_set(b, "label", labels[i]); - edje_object_part_swallow(swallow, ids[i], b); - evas_object_show(b); + for (i = 0; i < 3; i++) + { + Evas_Object *b; + b = edje_object_add(ecore_evas_get(em->main_win_ee)); + evas_object_name_set(b, ids[i]); + edje_object_file_set(b, em->theme_path, wtype[i]); + edje_object_part_geometry_get(swallow, ids[i], &x, &y, &w, &h); + evas_object_move(b, x, y); + evas_object_resize(b, w, h); + edje_object_part_text_set(b, "label", labels[i]); + edje_object_part_swallow(swallow, ids[i], b); + evas_object_show(b); - if (!strcmp("ecdb/button", wtype[i])) - ecdb_button_icon_swallow(ecore_evas_get( - em->main_win_ee), b, ids[i]); - } - } + if (!strcmp("ecdb/button", wtype[i])) + { + ecdb_button_icon_swallow(ecore_evas_get(em->main_win_ee), b, + ids[i]); + } + } + } - else if (edje_object_part_swallow_get(gui, "action_area") != swallow) - { - edje_object_part_swallow(gui, "action_area", swallow); - evas_object_show(swallow); - } + else if (edje_object_part_swallow_get(gui, "action_area") != swallow) + { + edje_object_part_swallow(gui, "action_area", swallow); + evas_object_show(swallow); + } - edje_object_signal_emit(gui, "ecdb,erase_page,visible", "ecdb"); - edje_object_signal_emit(swallow, "ecdb,erase_page,visible", "ecdb"); + edje_object_signal_emit(gui, "ecdb,erase_page,visible", "ecdb"); + edje_object_signal_emit(swallow, "ecdb,erase_page,visible", "ecdb"); } static void ecdb_burn_image_page_show(void) { - Evas_Object *swallow, *gui; + Evas_Object *swallow, *gui; - gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "burn_image_page"); + gui = evas_object_name_find(ecore_evas_get(em->main_win_ee), "gui"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "burn_image_page"); - if (!swallow) - { - Evas_Coord x, y, w, h; + if (!swallow) + { + Evas_Coord x, y, w, h; - swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); - edje_object_file_set(swallow, em->theme_path, - "ecdb/burn_image_page"); - evas_object_name_set(swallow, "burn_image_page"); - evas_object_data_set(swallow, "hide_signal", - "ecdb,burn_image_page,hide"); - edje_object_part_geometry_get(gui, "active_area", - &x, &y, &w, &h); - evas_object_move(swallow, x, y); - evas_object_resize(swallow, w, h); - edje_object_part_swallow(gui, "action_area", swallow); - evas_object_show(swallow); - edje_object_signal_callback_add(swallow, "mouse,down,1", - "ecdb/*", ecdb_cb_controls_focused, - NULL); - edje_object_signal_callback_add(swallow, "mouse,clicked,1", - "ecdb/burn_image/*", - ecdb_cb_burn_image_page_buttons_clicked, NULL); - edje_object_signal_callback_add(swallow, "hide,finished", - "burn_image_page", ecdb_cb_page_hide_finished, - NULL); - evas_object_show(swallow); + swallow = edje_object_add(ecore_evas_get(em->main_win_ee)); + edje_object_file_set(swallow, em->theme_path, "ecdb/burn_image_page"); + evas_object_name_set(swallow, "burn_image_page"); + evas_object_data_set(swallow, "hide_signal", "ecdb,burn_image_page,hide"); + edje_object_part_geometry_get(gui, "active_area", &x, &y, &w, &h); + evas_object_move(swallow, x, y); + evas_object_resize(swallow, w, h); + edje_object_part_swallow(gui, "action_area", swallow); + evas_object_show(swallow); + edje_object_signal_callback_add(swallow, "mouse,down,1", "ecdb/*", + ecdb_cb_controls_focused, NULL); + edje_object_signal_callback_add(swallow, "mouse,clicked,1", + "ecdb/burn_image/*", + ecdb_cb_burn_image_page_buttons_clicked, + NULL); + edje_object_signal_callback_add(swallow, "hide,finished", + "burn_image_page", + ecdb_cb_page_hide_finished, NULL); + evas_object_show(swallow); - int i; - char *labels[] = {"Return to Main Page", "Start Burn", - "Burn File"}; - char *ids[] = {"ecdb/burn_image/return", - "ecdb/burn_image/begin", - "ecdb/burn_image/file"}; - char *wtype[] = {"ecdb/button", "ecdb/button", "ecdb/entry"}; + int i; + char *labels[] = {"Return to Main Page", "Start Burn", "Burn File"}; + char *ids[] = {"ecdb/burn_image/return", "ecdb/burn_image/begin", + "ecdb/burn_image/file"}; + char *wtype[] = {"ecdb/button", "ecdb/button", "ecdb/entry"}; - for (i = 0; i < 3; i++) - { - Evas_Object *b; - b = edje_object_add(ecore_evas_get(em->main_win_ee)); - evas_object_name_set(b, ids[i]); - edje_object_file_set(b, em->theme_path, wtype[i]); - edje_object_part_geometry_get(swallow, ids[i], &x, - &y, &w, &h); - evas_object_move(b, x, y); - evas_object_resize(b, w, h); - edje_object_part_text_set(b, "label", labels[i]); - edje_object_part_swallow(swallow, ids[i], b); - evas_object_show(b); + for (i = 0; i < 3; i++) + { + Evas_Object *b; + b = edje_object_add(ecore_evas_get(em->main_win_ee)); + evas_object_name_set(b, ids[i]); + edje_object_file_set(b, em->theme_path, wtype[i]); + edje_object_part_geometry_get(swallow, ids[i], &x, &y, &w, &h); + evas_object_move(b, x, y); + evas_object_resize(b, w, h); + edje_object_part_text_set(b, "label", labels[i]); + edje_object_part_swallow(swallow, ids[i], b); + evas_object_show(b); - if (!strcmp("ecdb/button", wtype[i])) - ecdb_button_icon_swallow(ecore_evas_get( - em->main_win_ee), b, ids[i]); - else if (!strcmp("ecdb/entry", wtype[i])) + if (!strcmp("ecdb/button", wtype[i])) { - ecore_list_append(em->dnd_candidates, b); - evas_object_data_set(b, "dnd_call_func", - ecdb_dnd_entry_dnd_set); + ecdb_button_icon_swallow(ecore_evas_get(em->main_win_ee), b, + ids[i]); } - } - } + else if (!strcmp("ecdb/entry", wtype[i])) + { + ecore_list_append(em->dnd_candidates, b); + evas_object_data_set(b, "dnd_call_func", ecdb_dnd_entry_dnd_set); + } + } + } - else if (edje_object_part_swallow_get(gui, "action_area") != swallow) - { - edje_object_part_swallow(gui, "action_area", swallow); - evas_object_show(swallow); - } + else if (edje_object_part_swallow_get(gui, "action_area") != swallow) + { + edje_object_part_swallow(gui, "action_area", swallow); + evas_object_show(swallow); + } - edje_object_signal_emit(gui, "ecdb,burn_image_page,visible", "ecdb"); - edje_object_signal_emit(swallow, "ecdb,burn_image_page,visible", - "ecdb"); + edje_object_signal_emit(gui, "ecdb,burn_image_page,visible", "ecdb"); + edje_object_signal_emit(swallow, "ecdb,burn_image_page,visible", "ecdb"); } /* Hurrah! Fancyness */ static void ecdb_cb_page_hide_finished(void *data, Evas_Object *o, const char *emission, - const char *source) + const char *source) { - ecdb_page_hide(source); + ecdb_page_hide(source); } static void ecdb_gui_controls_disable(const char **ids, int n) { - Evas_Object *obj; - int i; + Evas_Object *obj; + int i; - for (i = 0; i < n; i++) - { - obj = evas_object_name_find(ecore_evas_get(em->main_win_ee), - ids[i]); - edje_object_signal_emit(obj, "ecdb,disable", "ecdb"); - } + for (i = 0; i < n; i++) + { + obj = evas_object_name_find(ecore_evas_get(em->main_win_ee), ids[i]); + edje_object_signal_emit(obj, "ecdb,disable", "ecdb"); + } } static void ecdb_gui_controls_enable(const char **ids, int n) { - Evas_Object *obj; - int i; + Evas_Object *obj; + int i; - for (i = 0; i < n; i++) - { - obj = evas_object_name_find(ecore_evas_get(em->main_win_ee), - ids[i]); - edje_object_signal_emit(obj, "ecdb,enable", "ecdb"); - } + for (i = 0; i < n; i++) + { + obj = evas_object_name_find(ecore_evas_get(em->main_win_ee), ids[i]); + edje_object_signal_emit(obj, "ecdb,enable", "ecdb"); + } } void ecdb_gui_erase_cleanup(void) { - Evas_Object *swallow; - const char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", - "ecdb/erase/speed"}; + Evas_Object *swallow; + const char *ids[] = {"ecdb/erase/return", "ecdb/erase/begin", + "ecdb/erase/speed"}; - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "erase_page"); - edje_object_part_text_set(swallow, "progress_text", "Erase Complete!"); - ecdb_gui_controls_enable(ids, 3); - edje_object_signal_emit(swallow, "ecdb,erase,done", "ecdb"); + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "erase_page"); + edje_object_part_text_set(swallow, "progress_text", "Erase Complete!"); + ecdb_gui_controls_enable(ids, 3); + edje_object_signal_emit(swallow, "ecdb,erase,done", "ecdb"); } void ecdb_gui_burn_image_cleanup(void) { - Evas_Object *swallow; - const char *ids[] = {"ecdb/burn_image/return", "ecdb/burn_image/begin", - "ecdb/burn_image/file"}; - swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), - "burn_image_page"); - edje_object_part_text_set(swallow, "progress_text", "Burn Complete!"); - ecdb_gui_controls_enable(ids, 3); - edje_object_signal_emit(swallow, "ecdb,burn_image,done", "ecdb"); + Evas_Object *swallow; + const char *ids[] = {"ecdb/burn_image/return", "ecdb/burn_image/begin", + "ecdb/burn_image/file"}; + swallow = evas_object_name_find(ecore_evas_get(em->main_win_ee), + "burn_image_page"); + edje_object_part_text_set(swallow, "progress_text", "Burn Complete!"); + ecdb_gui_controls_enable(ids, 3); + edje_object_signal_emit(swallow, "ecdb,burn_image,done", "ecdb"); } diff --git a/ecdb/trunk/src/ecdb_gui.h b/ecdb/trunk/src/ecdb_gui.h index 0415cd1..9cb164e 100644 --- a/ecdb/trunk/src/ecdb_gui.h +++ b/ecdb/trunk/src/ecdb_gui.h @@ -1,9 +1,9 @@ #ifndef ECDB_GUI_H #define ECDB_GUI_H -int ecdb_create_main_gui(void); -void ecdb_set_main_theme(const char *theme_name); -void ecdb_gui_erase_cleanup(void); -void ecdb_gui_burn_image_cleanup(void); +int ecdb_create_main_gui(void); +void ecdb_set_main_theme(const char *theme_name); +void ecdb_gui_erase_cleanup(void); +void ecdb_gui_burn_image_cleanup(void); #endif diff --git a/ecdb/trunk/src/ecdb_image.c b/ecdb/trunk/src/ecdb_image.c index e2e25c3..fa614c0 100644 --- a/ecdb/trunk/src/ecdb_image.c +++ b/ecdb/trunk/src/ecdb_image.c @@ -6,103 +6,109 @@ void ecdb_source_add_directory_recursive(Ecdb_Source *parent); Ecdb_Source * ecdb_source_new(void) { - Ecdb_Source *src; + Ecdb_Source *src; - src = calloc(1, sizeof(Ecdb_Source)); - if (!src) - return NULL; - if (!ecdb_source_init(src)) - { - FREE(src); - return NULL; - } + src = calloc(1, sizeof(Ecdb_Source)); + if (!src) + { + return NULL; + } + if (!ecdb_source_init(src)) + { + FREE(src); + return NULL; + } - return src; + return src; } int ecdb_source_init(Ecdb_Source *src) { - src->dir = FALSE; - src->num_children = 0; - src->children = calloc(1, sizeof(Ecdb_Source)); - if (!src->children) - return FALSE; - src->children[src->num_children] = NULL; - return TRUE; + src->dir = FALSE; + src->num_children = 0; + src->children = calloc(1, sizeof(Ecdb_Source)); + if (!src->children) + { + return FALSE; + } + src->children[src->num_children] = NULL; + return TRUE; } void ecdb_source_destroy(Ecdb_Source *src) { - int i; - Ecdb_Source *child; + int i; + Ecdb_Source *child; - /* free the non-recursive stuff */ - if (src->dst) eina_stringshare_del(src->dst); - if (src->node) iso_node_unref(src->node); + /* free the non-recursive stuff */ + if (src->dst) eina_stringshare_del(src->dst); + if (src->node) iso_node_unref(src->node); - for (i = 0; src->children[i]; i++) - { - child = src->children[i]; - ecdb_source_destroy(child); - } - FREE(src->children); - FREE(src); + for (i = 0; src->children[i]; i++) + { + child = src->children[i]; + ecdb_source_destroy(child); + } + FREE(src->children); + FREE(src); } void ecdb_source_data_set(Ecdb_Source *src, const char *dst) { - if ((!src) || (!ecore_file_exists(dst))) - return; + if ((!src) || (!ecore_file_exists(dst))) + { + return; + } - src->dst = eina_stringshare_add(dst); + src->dst = eina_stringshare_add(dst); - /* Add the files recursively here */ - if (ecore_file_is_dir(src->dst)) - { - src->dir = !!TRUE; - ecdb_source_add_directory_recursive(src); - } + /* Add the files recursively here */ + if (ecore_file_is_dir(src->dst)) + { + src->dir = !!TRUE; + ecdb_source_add_directory_recursive(src); + } } void ecdb_source_add_directory_recursive(Ecdb_Source *parent) { - Ecore_List *files; - Ecdb_Source *child; - char path[PATH_MAX]; - char *src; + Ecore_List *files; + Ecdb_Source *child; + char path[PATH_MAX]; + char *src; - files = ecore_file_ls(parent->dst); + files = ecore_file_ls(parent->dst); - while ((src = ecore_list_first_remove(files))) - { - child = ecdb_source_new(); - snprintf(path, PATH_MAX, "%s/%s", parent->dst, src); - ecdb_source_data_set(child, path); - ecdb_source_child_append(parent, child); - free(src); - } - ecore_list_destroy(files); + while ((src = ecore_list_first_remove(files))) + { + child = ecdb_source_new(); + snprintf(path, PATH_MAX, "%s/%s", parent->dst, src); + ecdb_source_data_set(child, path); + ecdb_source_child_append(parent, child); + FREE(src); + } + ecore_list_destroy(files); } void ecdb_source_child_append(Ecdb_Source *src, Ecdb_Source *child) { - if (src == child) - { - printf("Trying to make a parent of itself!\n"); - return; - } + if (src == child) + { + printf("Trying to make a parent of itself!\n"); + return; + } - src->num_children++; - src->children = realloc(src->children, sizeof(Ecdb_Source) * - (src->num_children + 1)); - src->children[src->num_children - 1] = child; - src->children[src->num_children] = NULL; - child->parent = src; + src->num_children++; + src->children = realloc(src->children, sizeof(Ecdb_Source) * + (src->num_children + 1)); + src->children[src->num_children - 1] = child; + src->children[src->num_children] = NULL; + child->parent = src; } /* Basically here we can remove all occurences (who knows why we'd get @@ -112,163 +118,176 @@ ecdb_source_child_append(Ecdb_Source *src, Ecdb_Source *child) void ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child) { - Ecdb_Source **temp; - int i, cidx, f; + Ecdb_Source **temp; + int i, cidx, f; - if (src == child) - { - printf("Trying to remove oneself\n"); - return; - } + if (src == child) + { + printf("Trying to remove oneself\n"); + return; + } - temp = calloc(src->num_children, sizeof(Ecdb_Source)); - temp[src->num_children - 1] = NULL; + temp = calloc(src->num_children, sizeof(Ecdb_Source)); + temp[src->num_children - 1] = NULL; - cidx = f = 0; - for (i = 0; src->children[i]; i++) - { - if ((src->children[i] == child) && (!f)) - { - f++; - continue; - } - temp[cidx] = src->children[i]; - cidx++; - } + cidx = f = 0; + for (i = 0; src->children[i]; i++) + { + if ((src->children[i] == child) && (!f)) + { + f++; + continue; + } + temp[cidx] = src->children[i]; + cidx++; + } - FREE(src->children); - src->children = temp; - src->num_children--; - child->parent = NULL; + FREE(src->children); + src->children = temp; + src->num_children--; + child->parent = NULL; } void ecdb_source_add_children_rec(Ecdb_Source *parent, IsoImage *image) { - IsoDir *cd = NULL; - Ecdb_Source *cs; - int i; + IsoDir *cd = NULL; + Ecdb_Source *cs; + int i; - if ((!parent) || (!image)) - return; + if ((!parent) || (!image)) + return; - i = 0; - while ((cs = parent->children[i])) - { - if (cs->dir) - { - iso_tree_add_new_dir(ISO_DIR(parent->node), - ecore_file_file_get(cs->dst), - &cd); - cs->node = ISO_NODE(cd); - /* If the source has children, find the node from above - * (if applicable), and recursively add to it */ - if (cs->num_children > 0) - { - ecdb_source_add_children_rec(cs, image); - } + i = 0; + while ((cs = parent->children[i])) + { + if (cs->dir) + { + iso_tree_add_new_dir(ISO_DIR(parent->node), + ecore_file_file_get(cs->dst), &cd); + cs->node = ISO_NODE(cd); + /* If the source has children, find the node from above + * (if applicable), and recursively add to it */ + if (cs->num_children > 0) + { + ecdb_source_add_children_rec(cs, image); + } - } - - /* file */ - else - { - iso_tree_add_node(image, ISO_DIR(parent->node), - cs->dst, NULL); - } - i++; - } + } + + /* file */ + else + { + iso_tree_add_node(image, ISO_DIR(parent->node), + cs->dst, NULL); + } + i++; + } } /* proj->files should only have children */ BurnSource * ecdb_image_project(Ecdb_Burn_Project *proj) { - IsoImage *image; - Ecdb_Source *c; - IsoWriteOpts *opts; - BurnSource *data_src, *fifo_src; + IsoImage *image; + Ecdb_Source *c; + IsoWriteOpts *opts; + BurnSource *data_src, *fifo_src; - if ((!proj->files) || (!proj->files->num_children)) - return NULL; + if ((!proj->files) || (!proj->files->num_children)) + { + return NULL; + } - /* To handle already-suplied image files */ - if (proj->files->num_children == 1) - { - efreet_mime_init(); - c = proj->files->children[0]; - if ((!ecore_file_is_dir(c->dst)) && - (!strcmp(efreet_mime_type_get(c->dst), - "application/x-cd-image"))) - { - data_src = burn_file_source_new(c->dst, NULL); - goto FIFO_CREATE; - } - else if (ECDB_PROJECT(proj)->type == ECDB_IMAGE_PROJECT) - { - printf("Supplied file is not an image!\n"); - efreet_mime_shutdown(); - return NULL; - } - efreet_mime_shutdown(); - } + /* To handle already-suplied image files */ + if (proj->files->num_children == 1) + { + efreet_mime_init(); + c = proj->files->children[0]; + if ((!ecore_file_is_dir(c->dst)) && + (!strcmp(efreet_mime_type_get(c->dst), "application/x-cd-image"))) + { + data_src = burn_file_source_new(c->dst, NULL); + goto FIFO_CREATE; + } + else if (ECDB_PROJECT(proj)->type == ECDB_IMAGE_PROJECT) + { + printf("Supplied file is not an image!\n"); + efreet_mime_shutdown(); + return NULL; + } + efreet_mime_shutdown(); + } - /* Otherwise we have a bunch of files */ - if (!iso_image_new(proj->volume_id, &image)) - { - printf("Failed to create image!\n"); - return NULL; - } + /* Otherwise we have a bunch of files */ + if (!iso_image_new(proj->volume_id, &image)) + { + printf("Failed to create image!\n"); + return NULL; + } - /* Set all ids */ - if (proj->publisher_id) - iso_image_set_publisher_id(image, proj->publisher_id); - if (proj->data_preparer_id) - iso_image_set_data_preparer_id(image, - proj->data_preparer_id); - if (proj->system_id) - iso_image_set_system_id(image, proj->system_id); - if (proj->application_id) - iso_image_set_application_id(image, proj->application_id); - if (proj->copywrite_id) - iso_image_set_copyright_file_id(image, proj->copywrite_id); - if (proj->abstract_id) - iso_image_set_abstract_file_id(image, proj->abstract_id); - if (proj->biblio_id) - iso_image_set_biblio_file_id(image, proj->biblio_id); + /* Set all ids */ + if (proj->publisher_id) + { + iso_image_set_publisher_id(image, proj->publisher_id); + } + if (proj->data_preparer_id) + { + iso_image_set_data_preparer_id(image, proj->data_preparer_id); + } + if (proj->system_id) + { + iso_image_set_system_id(image, proj->system_id); + } + if (proj->application_id) + { + iso_image_set_application_id(image, proj->application_id); + } + if (proj->copywrite_id) + { + iso_image_set_copyright_file_id(image, proj->copywrite_id); + } + if (proj->abstract_id) + { + iso_image_set_abstract_file_id(image, proj->abstract_id); + } + if (proj->biblio_id) + { + iso_image_set_biblio_file_id(image, proj->biblio_id); + } - if (!iso_write_opts_new(&opts, 2)) - { - printf("Failed to create writing options!\n"); - iso_image_unref(image); - return NULL; - } + if (!iso_write_opts_new(&opts, 2)) + { + printf("Failed to create writing options!\n"); + iso_image_unref(image); + return NULL; + } - /* And some write opts stuff */ - iso_write_opts_set_iso_level(opts, proj->iso_level); - iso_write_opts_set_joliet(opts, proj->use_joliet); - iso_write_opts_set_rockridge(opts, proj->use_rockridge); - iso_write_opts_set_iso1999(opts, proj->iso1990); - iso_write_opts_set_appendable(opts, proj->multi); - - iso_tree_set_follow_symlinks(image, proj->follow_symlinks); - iso_tree_set_ignore_hidden(image, proj->ignore_hidden); - iso_tree_set_ignore_special(image, proj->ignore_special); + /* And some write opts stuff */ + iso_write_opts_set_iso_level(opts, proj->iso_level); + iso_write_opts_set_joliet(opts, proj->use_joliet); + iso_write_opts_set_rockridge(opts, proj->use_rockridge); + iso_write_opts_set_iso1999(opts, proj->iso1990); + iso_write_opts_set_appendable(opts, proj->multi); + + iso_tree_set_follow_symlinks(image, proj->follow_symlinks); + iso_tree_set_ignore_hidden(image, proj->ignore_hidden); + iso_tree_set_ignore_special(image, proj->ignore_special); - /* actually fill image with some files now */ - proj->files->node = ISO_NODE(iso_image_get_root(image)); - ecdb_source_add_children_rec(proj->files, image); - - /* Make the burn source here */ - iso_image_create_burn_source(image, opts, &data_src); - iso_write_opts_free(opts); - iso_image_unref(image); + /* actually fill image with some files now */ + proj->files->node = ISO_NODE(iso_image_get_root(image)); + ecdb_source_add_children_rec(proj->files, image); + + /* Make the burn source here */ + iso_image_create_burn_source(image, opts, &data_src); + iso_write_opts_free(opts); + iso_image_unref(image); - /* And, convert to fifo */ + /* And, convert to fifo */ FIFO_CREATE: - fifo_src = burn_fifo_source_new(data_src, - proj->fifo_chunksize, proj->fifo_chunks, 0); - burn_source_free(data_src); - return fifo_src; + fifo_src = burn_fifo_source_new(data_src, proj->fifo_chunksize, + proj->fifo_chunks, 0); + burn_source_free(data_src); + return fifo_src; } diff --git a/ecdb/trunk/src/ecdb_image.h b/ecdb/trunk/src/ecdb_image.h index dc3189d..182bbc3 100644 --- a/ecdb/trunk/src/ecdb_image.h +++ b/ecdb/trunk/src/ecdb_image.h @@ -1,11 +1,11 @@ #ifndef ECDB_IMAGE_H #define ECDB_IMAGE_H -Ecdb_Source *ecdb_source_new(void); -void ecdb_source_destroy(Ecdb_Source *src); -void ecdb_source_data_set(Ecdb_Source *src, const char *dst); -void ecdb_source_child_append(Ecdb_Source *src, Ecdb_Source *child); -void ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child); +Ecdb_Source *ecdb_source_new(void); +void ecdb_source_destroy(Ecdb_Source *src); +void ecdb_source_data_set(Ecdb_Source *src, const char *dst); +void ecdb_source_child_append(Ecdb_Source *src, Ecdb_Source *child); +void ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child); BurnSource *ecdb_image_project(Ecdb_Burn_Project *proj); #endif diff --git a/ecdb/trunk/src/ecdb_misc.c b/ecdb/trunk/src/ecdb_misc.c index 3a1e609..f17ccaf 100644 --- a/ecdb/trunk/src/ecdb_misc.c +++ b/ecdb/trunk/src/ecdb_misc.c @@ -3,241 +3,264 @@ Ecdb_Project * ecdb_project_new(void) { - Ecdb_Project *proj; + Ecdb_Project *proj; - proj = calloc(1, sizeof(Ecdb_Project)); - if (!proj) - return NULL; - if (!ecdb_project_init(proj)) - { - FREE(proj); - return NULL; - } - - return proj; + proj = calloc(1, sizeof(Ecdb_Project)); + if (!proj) + { + return NULL; + } + if (!ecdb_project_init(proj)) + { + FREE(proj); + return NULL; + } + + return proj; } int ecdb_project_init(Ecdb_Project *proj) { - return TRUE; + return TRUE; } void ecdb_project_destroy(Ecdb_Project *proj) { - printf("Destroying base project\n"); + printf("Destroying base project\n"); } void ecdb_project_type_set(Ecdb_Project *proj, unsigned int t) { - proj->type = t; + proj->type = t; } int ecdb_shutdown(void *data, int type, void *event) { - if (em->drives) ecore_list_destroy(em->drives); - if (em->dnd_candidates) ecore_list_destroy(em->dnd_candidates); - free(em); - - if (!ecore_file_recursive_rm("/tmp/ecdb")) - printf("Removal of temporary directory failed!\n"); - ewl_main_quit(); - return FALSE; + if (em->drives) + { + ecore_list_destroy(em->drives); + } + if (em->dnd_candidates) + { + ecore_list_destroy(em->dnd_candidates); + } + FREE(em); + + if (!ecore_file_recursive_rm("/tmp/ecdb")) + { + printf("Removal of temporary directory failed!\n"); + } + ewl_main_quit(); + return FALSE; } int ecdb_burn_init(void) { - if (!burn_initialize()) - return 0; + if (!burn_initialize()) + { + return 0; + } - burn_msgs_set_severities("NEVER", "SORRY", "ecdb: "); - burn_set_signal_handling("ecdb: ", NULL, 0); + burn_msgs_set_severities("NEVER", "SORRY", "ecdb: "); + burn_set_signal_handling("ecdb: ", NULL, 0); - return 1; + return 1; } int ecdb_image_init(void) { - if (!iso_init()) - return 0; - iso_set_msgs_severities("NEVER", "SORRY", "ecdb: "); + if (!iso_init()) + { + return 0; + } + iso_set_msgs_severities("NEVER", "SORRY", "ecdb: "); - return 1; + return 1; } int ecdb_match_keyword(const char *chk, const char *key, int len) { - int i; + int i; - for (i = 0; i < len; i++) - { - if (chk[i] != key[i]) - return TRUE; - } + for (i = 0; i < len; i++) + { + if (chk[i] != key[i]) + { + return TRUE; + } + } - return FALSE; + return FALSE; } char * ecdb_strip_string(const char *strip) { - char *t1 = (char *)strip; + char *t1 = (char *)strip; - do - { - if (*t1 == ' ') - { - t1++; - return strdup(t1); - } - } while ((t1) && (t1++)); + do + { + if (*t1 == ' ') + { + t1++; + return strdup(t1); + } + } while ((t1) && (t1++)); - return NULL; + return NULL; } char * ecdb_strip_next_argument(const char *strip) { - char *t1 = (char *)strip, *t2; - char *ret = NULL; - int len = 0, space = FALSE; + char *t1 = (char *)strip, *t2; + char *ret = NULL; + int len = 0, space = FALSE; - do - { - if (*t1 == ' ') - space = TRUE; + do + { + if (*t1 == ' ') + { + space = TRUE; + } - if ((*t1 != ' ') && (space == TRUE)) - { - t2 = t1; + if ((*t1 != ' ') && (space == TRUE)) + { + t2 = t1; - /* Find length of string to copy */ - while ((*t2) && (*t2 != ' ')) - { - len++; - t2++; - } + /* Find length of string to copy */ + while ((*t2) && (*t2 != ' ')) + { + len++; + t2++; + } - /* Given no more args */ - if (!len) - return NULL; - else - len++; + /* Given no more args */ + if (!len) + { + return NULL; + } + else + { + len++; + } - /* Make a new string and copy everything over */ - ret = malloc(sizeof(char) * len); - memcpy(ret, t1, len); - return ret; - } - } while (*(t1++)); + /* Make a new string and copy everything over */ + ret = malloc(sizeof(char) * len); + memcpy(ret, t1, len); + return ret; + } + } while (*(t1++)); - return NULL; + return NULL; } void ecdb_button_icon_swallow(Evas *e, Evas_Object *b, const char *iname) { - Evas_Object *icon; - Evas_Coord x, y, w, h; + Evas_Object *icon; + Evas_Coord x, y, w, h; - icon = edje_object_add(e); - edje_object_file_set(icon, em->theme_path, iname); - edje_object_part_geometry_get(b, "icon", &x, &y, &w, &h); - evas_object_move(icon, x, y); - evas_object_resize(icon, w, h); - edje_object_part_swallow(b, "icon", icon); - evas_object_show(icon); + icon = edje_object_add(e); + edje_object_file_set(icon, em->theme_path, iname); + edje_object_part_geometry_get(b, "icon", &x, &y, &w, &h); + evas_object_move(icon, x, y); + evas_object_resize(icon, w, h); + edje_object_part_swallow(b, "icon", icon); + evas_object_show(icon); } int ecdb_dnd_position(void *data, int type, void *event) { - Ecore_X_Event_Xdnd_Position *ev; - Evas_Object *o; - Ecore_X_Rectangle rect; - Evas_Coord window_x, window_y, window_w, window_h, x, y, w, h; + Ecore_X_Event_Xdnd_Position *ev; + Evas_Object *o; + Ecore_X_Rectangle rect; + Evas_Coord window_x, window_y, window_w, window_h, x, y, w, h; - ev = event; - if (ev->win != ecore_evas_software_x11_window_get(em->main_win_ee)) - return 1; + ev = event; + if (ev->win != ecore_evas_software_x11_window_get(em->main_win_ee)) + { + return 1; + } - ecore_evas_geometry_get(em->main_win_ee, &window_x, - &window_y, &window_w, &window_h); - ecore_list_first_goto(em->dnd_candidates); - while ((o = ecore_list_next(em->dnd_candidates))) - { - if (evas_object_visible_get(o)) - { - evas_object_geometry_get(o, &x, &y, &w, &h); - x += window_x; - y += window_y; + ecore_evas_geometry_get(em->main_win_ee, &window_x, &window_y, &window_w, + &window_h); + ecore_list_first_goto(em->dnd_candidates); + while ((o = ecore_list_next(em->dnd_candidates))) + { + if (evas_object_visible_get(o)) + { + evas_object_geometry_get(o, &x, &y, &w, &h); + x += window_x; + y += window_y; - if ((ev->position.x >= x) && (ev->position.x <= (x+w)) - && (ev->position.y >= y) - && (ev->position.y <= (y + h))) - { - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - em->drop_object = o; - ecore_x_dnd_send_status(1, 1, rect, - ECORE_X_DND_ACTION_PRIVATE); - return 1; - } - } - } + if ((ev->position.x >= x) && (ev->position.x <= (x+w)) + && (ev->position.y >= y) && (ev->position.y <= (y + h))) + { + rect.x = x; + rect.y = y; + rect.width = w; + rect.height = h; + em->drop_object = o; + ecore_x_dnd_send_status(1, 1, rect, ECORE_X_DND_ACTION_PRIVATE); + return 1; + } + } + } - rect.x = window_x; - rect.y = window_y; - rect.width = window_w; - rect.height = window_h; - ecore_x_dnd_send_status(0, 1, rect, ECORE_X_DND_ACTION_PRIVATE); + rect.x = window_x; + rect.y = window_y; + rect.width = window_w; + rect.height = window_h; + ecore_x_dnd_send_status(0, 1, rect, ECORE_X_DND_ACTION_PRIVATE); - return 1; + return 1; } int ecdb_dnd_drop(void *data, int type, void *event) { - if (em->drop_object) - { - ecore_x_selection_xdnd_request - (ecore_evas_software_x11_window_get(em->main_win_ee), - "text/uri-list"); - } - return 1; + if (em->drop_object) + { + ecore_x_selection_xdnd_request + (ecore_evas_software_x11_window_get(em->main_win_ee), + "text/uri-list"); + } + return 1; } int ecdb_dnd_selection(void *data, int type, void *event) { - Ecore_X_Event_Selection_Notify *ev; - Ecore_X_Selection_Data_Files *files; - void (*call_func)(Evas_Object *, Ecore_X_Selection_Data_Files *) = - NULL; + Ecore_X_Event_Selection_Notify *ev; + Ecore_X_Selection_Data_Files *files; + void (*call_func)(Evas_Object *, Ecore_X_Selection_Data_Files *) = NULL; - ev = event; - if ((!em->drop_object) || (ev->selection != ECORE_X_SELECTION_XDND) - || (!(files = ev->data)) || (files->num_files <= 0)) - { - ecore_x_dnd_send_finished(); - return 1; - } + ev = event; + if ((!em->drop_object) || (ev->selection != ECORE_X_SELECTION_XDND) + || (!(files = ev->data)) || (files->num_files <= 0)) + { + ecore_x_dnd_send_finished(); + return 1; + } - call_func = evas_object_data_get(em->drop_object, "dnd_call_func"); - if (call_func != NULL) - call_func(em->drop_object, files); + call_func = evas_object_data_get(em->drop_object, "dnd_call_func"); + if (call_func != NULL) + { + call_func(em->drop_object, files); + } - em->drop_object = NULL; - ecore_x_dnd_send_finished(); - return 1; + em->drop_object = NULL; + ecore_x_dnd_send_finished(); + return 1; } @@ -246,5 +269,9 @@ ecdb_dnd_selection(void *data, int type, void *event) void ecdb_dnd_entry_dnd_set(Evas_Object *o, Ecore_X_Selection_Data_Files *files) { - edje_object_part_text_set(o, "label", files->files[0]); + Efreet_Uri *uri; + + uri = efreet_uri_decode(files->files[0]); + edje_object_part_text_set(o, "label", uri->path); + efreet_uri_free(uri); } diff --git a/ecdb/trunk/src/ecdb_misc.h b/ecdb/trunk/src/ecdb_misc.h index a7a1cca..97390bd 100644 --- a/ecdb/trunk/src/ecdb_misc.h +++ b/ecdb/trunk/src/ecdb_misc.h @@ -3,27 +3,27 @@ // At some point I should move the ecdb_project_* stuff into its own file, // and the init and shutdown stuff into ecdb.c -Ecdb_Project *ecdb_project_new(void); -int ecdb_project_init(Ecdb_Project *proj); -void ecdb_project_destroy(Ecdb_Project *proj); -void ecdb_project_type_set(Ecdb_Project *proj, unsigned int t); -void ecdb_projects_free(void *data); -int ecdb_shutdown(void *data, int type, void *event); -int ecdb_burn_init(void); -int ecdb_image_init(void); +Ecdb_Project *ecdb_project_new(void); +int ecdb_project_init(Ecdb_Project *proj); +void ecdb_project_destroy(Ecdb_Project *proj); +void ecdb_project_type_set(Ecdb_Project *proj, unsigned int t); +void ecdb_projects_free(void *data); +int ecdb_shutdown(void *data, int type, void *event); +int ecdb_burn_init(void); +int ecdb_image_init(void); /* This is misc after all */ -int ecdb_match_keyword(const char *chk, const char *key, int len); -char *ecdb_strip_next_argument(const char *strip); -char *ecdb_strip_string(const char *strip); -void ecdb_button_icon_swallow(Evas *e, Evas_Object *b, - const char *iname); +int ecdb_match_keyword(const char *chk, const char *key, int len); +char *ecdb_strip_next_argument(const char *strip); +char *ecdb_strip_string(const char *strip); +void ecdb_button_icon_swallow(Evas *e, Evas_Object *b, + const char *iname); // Also consider moving dnd stuff into its own file -int ecdb_dnd_position(void *data, int type, void *event); -int ecdb_dnd_drop(void *data, int type, void *event); -int ecdb_dnd_selection(void *data, int type, void *event); -void ecdb_dnd_entry_dnd_set(Evas_Object *o, - Ecore_X_Selection_Data_Files *files); +int ecdb_dnd_position(void *data, int type, void *event); +int ecdb_dnd_drop(void *data, int type, void *event); +int ecdb_dnd_selection(void *data, int type, void *event); +void ecdb_dnd_entry_dnd_set(Evas_Object *o, + Ecore_X_Selection_Data_Files *files); #endif