change python scripts so modules which register with blender have a register() functi...
[blender.git] / release / scripts / ui / space_text.py
index 0d33f181a069942b078b9f18ab2c6c557d51e5bc..cbc7ce9244b688ad281b41146779aa2767f47c1c 100644 (file)
@@ -12,7 +12,7 @@
 #
 #  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #
 # ##### END GPL LICENSE BLOCK #####
 
@@ -34,38 +34,39 @@ class TEXT_HT_header(bpy.types.Header):
 
         if context.area.show_menus:
             sub = row.row(align=True)
-            sub.itemM("TEXT_MT_text")
+            sub.menu("TEXT_MT_text")
             if text:
-                sub.itemM("TEXT_MT_edit")
-                sub.itemM("TEXT_MT_format")
+                sub.menu("TEXT_MT_edit")
+                sub.menu("TEXT_MT_format")
 
         if text and text.modified:
             row = layout.row()
             # row.color(redalert)
-            row.itemO("text.resolve_conflict", text="", icon='ICON_HELP')
+            row.operator("text.resolve_conflict", text="", icon='HELP')
 
         layout.template_ID(st, "text", new="text.new", unlink="text.unlink")
 
         row = layout.row(align=True)
-        row.itemR(st, "line_numbers", text="")
-        row.itemR(st, "word_wrap", text="")
-        row.itemR(st, "syntax_highlight", text="")
+        row.prop(st, "line_numbers", text="")
+        row.prop(st, "word_wrap", text="")
+        row.prop(st, "syntax_highlight", text="")
 
         if text:
+            row = layout.row()
+            row.operator("text.run_script")
+            row.prop(text, "use_module")
+
             row = layout.row()
             if text.filename != "":
                 if text.dirty:
-                    row.itemL(text="File: *%s (unsaved)" % text.filename)
+                    row.label(text="File: *%s (unsaved)" % text.filename)
                 else:
-                    row.itemL(text="File: %s" % text.filename)
+                    row.label(text="File: %s" % text.filename)
             else:
                 if text.library:
-                    row.itemL(text="Text: External")
+                    row.label(text="Text: External")
                 else:
-                    row.itemL(text="Text: Internal")
-
-        row = layout.row()
-        row.itemO("text.run_script")
+                    row.label(text="Text: Internal")
 
 
 class TEXT_PT_properties(bpy.types.Panel):
@@ -79,14 +80,18 @@ class TEXT_PT_properties(bpy.types.Panel):
         st = context.space_data
 
         flow = layout.column_flow()
-        flow.itemR(st, "line_numbers")
-        flow.itemR(st, "word_wrap")
-        flow.itemR(st, "syntax_highlight")
-        flow.itemR(st, "live_edit")
+        flow.prop(st, "line_numbers")
+        flow.prop(st, "word_wrap")
+        flow.prop(st, "syntax_highlight")
+        flow.prop(st, "live_edit")
 
         flow = layout.column_flow()
-        flow.itemR(st, "font_size")
-        flow.itemR(st, "tab_width")
+        flow.prop(st, "font_size")
+        flow.prop(st, "tab_width")
+
+        text = st.text
+        if text:
+            flow.prop(text, "tabs_as_spaces")
 
 
 class TEXT_PT_find(bpy.types.Panel):
@@ -102,24 +107,24 @@ class TEXT_PT_find(bpy.types.Panel):
         # find
         col = layout.column(align=True)
         row = col.row()
-        row.itemR(st, "find_text", text="")
-        row.itemO("text.find_set_selected", text="", icon='ICON_TEXT')
-        col.itemO("text.find")
+        row.prop(st, "find_text", text="")
+        row.operator("text.find_set_selected", text="", icon='TEXT')
+        col.operator("text.find")
 
         # replace
         col = layout.column(align=True)
         row = col.row()
-        row.itemR(st, "replace_text", text="")
-        row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT')
-        col.itemO("text.replace")
+        row.prop(st, "replace_text", text="")
+        row.operator("text.replace_set_selected", text="", icon='TEXT')
+        col.operator("text.replace")
 
         # mark
-        layout.itemO("text.mark_all")
+        layout.operator("text.mark_all")
 
         # settings
         row = layout.row()
-        row.itemR(st, "find_wrap", text="Wrap")
-        row.itemR(st, "find_all", text="All")
+        row.prop(st, "find_wrap", text="Wrap")
+        row.prop(st, "find_all", text="All")
 
 
 class TEXT_MT_text(bpy.types.Menu):
@@ -132,40 +137,37 @@ class TEXT_MT_text(bpy.types.Menu):
         text = st.text
 
         layout.column()
-        layout.itemO("text.new")
-        layout.itemO("text.open")
+        layout.operator("text.new")
+        layout.operator("text.open")
 
         if text:
-            layout.itemO("text.reload")
+            layout.operator("text.reload")
 
             layout.column()
-            layout.itemO("text.save")
-            layout.itemO("text.save_as")
+            layout.operator("text.save")
+            layout.operator("text.save_as")
 
             if text.filename != "":
-                layout.itemO("text.make_internal")
+                layout.operator("text.make_internal")
 
             layout.column()
-            layout.itemO("text.run_script")
+            layout.operator("text.run_script")
 
             #ifndef DISABLE_PYTHON
             # XXX if(BPY_is_pyconstraint(text))
             # XXX   uiMenuItemO(head, 0, "text.refresh_pyconstraints");
             #endif
 
-        layout.itemS()
+        layout.separator()
 
-        layout.itemO("text.properties", icon='ICON_MENU_PANEL')
+        layout.operator("text.properties", icon='MENU_PANEL')
 
+        layout.menu("TEXT_MT_templates")
 
+        layout.separator()
 
-        #ifndef DISABLE_PYTHON
-        # XXX layout.column()
-        # XXX uiDefIconTextBlockBut(block, text_template_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Script Templates", 0, yco-=20, 120, 19, "");
-        # XXX uiDefIconTextBlockBut(block, text_plugin_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Text Plugins", 0, yco-=20, 120, 19, "");
-        #endif
-
-        layout.itemM("TEXT_MT_templates")
+        layout.operator("screen.area_dupli")
+        layout.operator("screen.screen_full_area")
 
 
 class TEXT_MT_templates(bpy.types.Menu):
@@ -175,23 +177,7 @@ class TEXT_MT_templates(bpy.types.Menu):
     bl_label = "Script Templates"
 
     def draw(self, context):
-        import os
-
-        def path_to_name(f):
-            f_base = os.path.splitext(f)[0]
-            f_base = f_base.replace("_", " ")
-            return ' '.join([w[0].upper() + w[1:] for w in f_base.split()])
-
-        layout = self.layout
-        template_dir = os.path.join(os.path.dirname(__file__), os.path.pardir, "templates")
-
-        for f in sorted(os.listdir(template_dir)):
-
-            if f.startswith("."):
-                continue
-
-            path = os.path.join(template_dir, f)
-            layout.item_stringO("text.open", "path", path, text=path_to_name(f))
+        self.path_menu(bpy.utils.script_paths("templates"), "text.open")
 
 
 class TEXT_MT_edit_view(bpy.types.Menu):
@@ -200,8 +186,8 @@ class TEXT_MT_edit_view(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File")
-        layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File")
+        layout.operator("text.move", text="Top of File").type = 'FILE_TOP'
+        layout.operator("text.move", text="Bottom of File").type = 'FILE_BOTTOM'
 
 
 class TEXT_MT_edit_select(bpy.types.Menu):
@@ -210,8 +196,8 @@ class TEXT_MT_edit_select(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.itemO("text.select_all")
-        layout.itemO("text.select_line")
+        layout.operator("text.select_all")
+        layout.operator("text.select_line")
 
 
 class TEXT_MT_edit_markers(bpy.types.Menu):
@@ -220,9 +206,9 @@ class TEXT_MT_edit_markers(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.itemO("text.markers_clear")
-        layout.itemO("text.next_marker")
-        layout.itemO("text.previous_marker")
+        layout.operator("text.markers_clear")
+        layout.operator("text.next_marker")
+        layout.operator("text.previous_marker")
 
 
 class TEXT_MT_format(bpy.types.Menu):
@@ -231,17 +217,17 @@ class TEXT_MT_format(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.itemO("text.indent")
-        layout.itemO("text.unindent")
+        layout.operator("text.indent")
+        layout.operator("text.unindent")
 
-        layout.itemS()
+        layout.separator()
 
-        layout.itemO("text.comment")
-        layout.itemO("text.uncomment")
+        layout.operator("text.comment")
+        layout.operator("text.uncomment")
 
-        layout.itemS()
+        layout.separator()
 
-        layout.item_menu_enumO("text.convert_whitespace", "type")
+        layout.operator_menu_enum("text.convert_whitespace", "type")
 
 
 class TEXT_MT_edit_to3d(bpy.types.Menu):
@@ -250,8 +236,8 @@ class TEXT_MT_edit_to3d(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object")
-        layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line")
+        layout.operator("text.to_3d_object", text="One Object").split_lines = False
+        layout.operator("text.to_3d_object", text="One Object Per Line").split_lines = True
 
 
 class TEXT_MT_edit(bpy.types.Menu):
@@ -263,38 +249,51 @@ class TEXT_MT_edit(bpy.types.Menu):
     def draw(self, context):
         layout = self.layout
 
-        layout.itemO("ed.undo")
-        layout.itemO("ed.redo")
+        layout.operator("ed.undo")
+        layout.operator("ed.redo")
+
+        layout.separator()
+
+        layout.operator("text.cut")
+        layout.operator("text.copy")
+        layout.operator("text.paste")
+
+        layout.separator()
+
+        layout.menu("TEXT_MT_edit_view")
+        layout.menu("TEXT_MT_edit_select")
+        layout.menu("TEXT_MT_edit_markers")
 
-        layout.itemS()
+        layout.separator()
 
-        layout.itemO("text.cut")
-        layout.itemO("text.copy")
-        layout.itemO("text.paste")
+        layout.operator("text.jump")
+        layout.operator("text.properties", text="Find...")
 
-        layout.itemS()
+        layout.separator()
 
-        layout.itemM("TEXT_MT_edit_view")
-        layout.itemM("TEXT_MT_edit_select")
-        layout.itemM("TEXT_MT_edit_markers")
+        layout.menu("TEXT_MT_edit_to3d")
 
-        layout.itemS()
 
-        layout.itemO("text.jump")
-        layout.itemO("text.properties", text="Find...")
+classes = [
+    TEXT_HT_header,
+    TEXT_PT_properties,
+    TEXT_PT_find,
+    TEXT_MT_text,
+    TEXT_MT_templates,
+    TEXT_MT_format,
+    TEXT_MT_edit,
+    TEXT_MT_edit_view,
+    TEXT_MT_edit_select,
+    TEXT_MT_edit_markers,
+    TEXT_MT_edit_to3d]
 
-        layout.itemS()
 
-        layout.itemM("TEXT_MT_edit_to3d")
+def register():
+    register = bpy.types.register
+    for cls in classes:
+        register(cls)
 
-bpy.types.register(TEXT_HT_header)
-bpy.types.register(TEXT_PT_properties)
-bpy.types.register(TEXT_PT_find)
-bpy.types.register(TEXT_MT_text)
-bpy.types.register(TEXT_MT_templates)
-bpy.types.register(TEXT_MT_format)
-bpy.types.register(TEXT_MT_edit)
-bpy.types.register(TEXT_MT_edit_view)
-bpy.types.register(TEXT_MT_edit_select)
-bpy.types.register(TEXT_MT_edit_markers)
-bpy.types.register(TEXT_MT_edit_to3d)
+def unregister():
+    unregister = bpy.types.unregister
+    for cls in classes:
+        unregister(cls)