diff options
author | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2016-01-18 03:39:09 +0300 |
---|---|---|
committer | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2016-01-18 03:39:09 +0300 |
commit | c6bc2363e5ec96d1aba36f1e7b4d321076d3f465 (patch) | |
tree | a09fa844a679328a72c3dc3e00d8a1a9bf26a6cd /source/blender/windowmanager/intern/wm_jobs.c | |
parent | c4c2bd1350a52e18f973bba7e52e929f94ff6496 (diff) |
UI: redesign of the progress bar.
A picture is worth a thousand words: http://wiki.blender.org/index.php/
File:UI_progress_bar.png
Reviewers: #user_interface, brecht, dingto
Reviewed by: brecht, dingto
Differential Revision: https://developer.blender.org/D1727
Diffstat (limited to 'source/blender/windowmanager/intern/wm_jobs.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_jobs.c | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_jobs.c b/source/blender/windowmanager/intern/wm_jobs.c index f8258d18c1a..72941d1b1da 100644 --- a/source/blender/windowmanager/intern/wm_jobs.c +++ b/source/blender/windowmanager/intern/wm_jobs.c @@ -103,7 +103,7 @@ struct wmJob { unsigned int note, endnote; -/* internal */ + /* internal */ void *owner; int flag; short suspended, running, ready, do_update, stop, job_type; @@ -112,6 +112,9 @@ struct wmJob { /* for display in header, identification */ char name[128]; + /* for other text display in progress bar */ + char text[128]; + /* once running, we store this separately */ void *run_customdata; void (*run_free)(void *); @@ -245,6 +248,38 @@ float WM_jobs_progress(wmWindowManager *wm, void *owner) return 0.0; } +/* time that job started */ +double WM_jobs_starttime(wmWindowManager *wm, void *owner) +{ + wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY); + + if (wm_job && wm_job->flag & WM_JOB_PROGRESS) + return wm_job->start_time; + + return 0; +} + +/* get progress bar tooltip text */ +char *WM_jobs_tooltip(wmWindowManager *wm, void *owner) +{ + wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY); + + if (wm_job && wm_job->flag & WM_JOB_PROGRESS) + return wm_job->text; + + return NULL; +} + +/* set progress bar text (e.g. tooltip, UI label, eta...) */ +void WM_jobs_set_tooltip(wmWindowManager *wm, void *owner, char *text) +{ + wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY); + + if (wm_job && wm_job->flag & WM_JOB_PROGRESS) { + BLI_strncpy(wm_job->text, text, sizeof(wm_job->text)); + } +} + char *WM_jobs_name(wmWindowManager *wm, void *owner) { wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY); @@ -280,6 +315,12 @@ bool WM_jobs_is_running(wmJob *wm_job) return wm_job->running; } +bool WM_jobs_is_stopped(wmWindowManager *wm, void *owner) +{ + wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY); + return wm_job->stop; +} + void *WM_jobs_customdata_get(wmJob *wm_job) { if (!wm_job->customdata) { @@ -420,8 +461,7 @@ void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job) if (wm_job->wt == NULL) wm_job->wt = WM_event_add_timer(wm, wm_job->win, TIMERJOBS, wm_job->timestep); - if (G.debug & G_DEBUG_JOBS) - wm_job->start_time = PIL_check_seconds_timer(); + wm_job->start_time = PIL_check_seconds_timer(); } else { printf("job fails, not initialized\n"); |