diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2018-05-23 23:38:25 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2018-05-23 23:38:25 +0300 |
commit | 6f20fcd5984a47baee9ff440e9e59584fccd1e59 (patch) | |
tree | 5b81aad5b91eb0893a4e0b9276ae2819e66cb631 /release/scripts/startup/bl_ui/space_statusbar.py | |
parent | 7b58073dc09c7241dfa08071323dfb7af3646e80 (diff) |
UI: Global "Status-bar" Area (WIP)
* Add horizontal bar at bottom of all non-temp windows, similar to the Top-bar.
* Status-bar is hidden in UI-less fullscreen mode
* Current contents are preliminary and based on T54861:
** Left: Current file-path if needed. "(Modified)" note if file was changed.
** Center: Scene statistics (like in 2.7 Info Editor).
** Right: Progress-bars and reports
* Internally managed as own "STATUSBAR" editor-type (hidden in UI).
* Like with the Top-bar, Status-bar data and SDNA writing is disabled.
* Most changes in low-level screen/area code are to support layout bounds that differ from window bounds.
Design task: T54861
Main changes approved by @brecht.
Diffstat (limited to 'release/scripts/startup/bl_ui/space_statusbar.py')
-rw-r--r-- | release/scripts/startup/bl_ui/space_statusbar.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/space_statusbar.py b/release/scripts/startup/bl_ui/space_statusbar.py new file mode 100644 index 00000000000..983b474d18b --- /dev/null +++ b/release/scripts/startup/bl_ui/space_statusbar.py @@ -0,0 +1,84 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy +from bpy.types import Header + + +class STATUSBAR_HT_header(Header): + bl_space_type = 'STATUSBAR' + + def draw(self, context): + area = context.area + region = context.region + + if region.alignment == 'RIGHT': + if region == area.regions[0]: + self.draw_right(context) + else: + self.draw_center(context) + else: + self.draw_left(context) + + def draw_left(self, context): + layout = self.layout + + row = layout.row(align=True) + if (bpy.data.filepath): + row.label(text=bpy.data.filepath, translate=False) + if bpy.data.is_dirty: + row.label("(Modified)") + + def draw_center(self, context): + layout = self.layout + + scene = context.scene + view_layer = context.view_layer + + layout.label(text=scene.statistics(view_layer), translate=False) + + def draw_right(self, context): + layout = self.layout + + layout.template_running_jobs() + layout.template_reports_banner() + + row = layout.row(align=True) + if bpy.app.autoexec_fail is True and bpy.app.autoexec_fail_quiet is False: + row.label("Auto-run disabled", icon='ERROR') + if bpy.data.is_saved: + props = row.operator("wm.revert_mainfile", icon='SCREEN_BACK', text="Reload Trusted") + props.use_scripts = True + + row.operator("script.autoexec_warn_clear", text="Ignore") + + # include last so text doesn't push buttons out of the header + row.label(bpy.app.autoexec_fail_message) + return + + + +classes = ( + STATUSBAR_HT_header, +) + +if __name__ == "__main__": # only for live edit. + from bpy.utils import register_class + for cls in classes: + register_class(cls) |