Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Dietrich <kevin.dietrich@mailoo.org>2016-01-18 03:39:09 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2016-01-18 03:39:09 +0300
commitc6bc2363e5ec96d1aba36f1e7b4d321076d3f465 (patch)
treea09fa844a679328a72c3dc3e00d8a1a9bf26a6cd /source/blender/windowmanager/intern/wm_jobs.c
parentc4c2bd1350a52e18f973bba7e52e929f94ff6496 (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.c46
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");