[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3129] contrib/py/scripts/addons/ text_intellisense.py: SVN maintenance.
gsr b3d
gsr.b3d at infernal-iceberg.com
Mon Mar 19 03:25:18 CET 2012
Revision: 3129
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3129
Author: gsrb3d
Date: 2012-03-19 02:25:17 +0000 (Mon, 19 Mar 2012)
Log Message:
-----------
SVN maintenance.
Modified Paths:
--------------
contrib/py/scripts/addons/text_intellisense.py
Property Changed:
----------------
contrib/py/scripts/addons/text_intellisense.py
Modified: contrib/py/scripts/addons/text_intellisense.py
===================================================================
--- contrib/py/scripts/addons/text_intellisense.py 2012-03-18 05:55:47 UTC (rev 3128)
+++ contrib/py/scripts/addons/text_intellisense.py 2012-03-19 02:25:17 UTC (rev 3129)
@@ -1,436 +1,436 @@
-# ***** 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 LICENCE BLOCK *****
-
-bl_info = {
- "name": "Intellisense for Text Editor",
- "author": "Mackraken",
- "version": (0, 2),
- "blender": (2, 6, 0),
- "api": 41851,
- "location": "Ctrl + Space at Text Editor",
- "description": "Adds intellense to the Text Editor",
- "warning": "Only works with 2.57 intellisense",
- "wiki_url": "",
- "tracker_url": "",
- "category": "Development"}
-
-import bpy
-
-def complete(context):
- from console import intellisense
- from console_python import get_console
-
- sc = context.space_data
- text = sc.text
-
- region = context.region
- for area in context.screen.areas:
- if area.type=="CONSOLE":
- region = area.regions[1]
- break
-
- console = get_console(hash(region))[0]
-
- line = text.current_line.body
- cursor = text.current_character
-
- result = intellisense.expand(line, cursor, console.locals, bpy.app.debug)
-
- return result
-
-
-class Intellimenu(bpy.types.Menu):
- bl_label = ""
- bl_idname = "IntelliMenu"
-
- text = ""
-
- def draw(self, context):
- layout = self.layout
- #Very ugly see how can i fix this
- options = complete(context)
-
- options = options[2].split(" ")
- for op in options:
- layout.operator("text.intellioptions", text=op).text=op
-
-#This operator executes when hits Ctrl+Space at the text editor
-
-class Intellisense(bpy.types.Operator):
- #'''Tooltip'''
- bl_idname = "text.intellisense"
- bl_label = "Text Editor Intellisense"
-
- text = ""
-
-# @classmethod
-# def poll(cls, context):
-# return context.active_object is not None
-
- def execute(self, context):
- sc = context.space_data
- text = sc.text
-
- if text.current_character>0:
- result = complete(context)
-
- #print(result)
-
- if result[2]=="":
- text.current_line.body = result[0]
- bpy.ops.text.move(type='LINE_END')
- else:
- bpy.ops.wm.call_menu(name=Intellimenu.bl_idname)
-
- return {'FINISHED'}
-
-#this operator completes the line with the options you choose from the menu
-class Intellioptions(bpy.types.Operator):
- #'''Tooltip'''
- bl_idname = "text.intellioptions"
- bl_label = "Intellisense options"
-
- text = bpy.props.StringProperty()
-
- @classmethod
- def poll(cls, context):
- return context.active_object is not None
-
- def execute(self, context):
- sc = context.space_data
- text = sc.text
-
- comp = self.text
- line = text.current_line.body
-
- lline = len(line)
- lcomp = len(comp)
-
- #intersect text
- intersect = [-1,-1]
-
- for i in range(lcomp):
- val1 = comp[0:i+1]
-
- for j in range(lline):
- val2 = line[lline-j-1::]
- #print(" ",j, val2)
-
- if val1==val2:
- intersect = [i, j]
- break
-
- if intersect[0]>-1:
- newline = line[0:lline-intersect[1]-1]+comp
- else:
- newline = line + comp
-
- #print(newline)
- text.current_line.body = newline
-
- bpy.ops.text.move(type='LINE_END')
-
-
- return {'FINISHED'}
-
-def send_console(context, all=0):
-
- sc = context.space_data
- text = sc.text
-
- console = None
-
- for area in bpy.context.screen.areas:
- if area.type=="CONSOLE":
- from console_python import get_console
-
- console = get_console(hash(area.regions[1]))[0]
-
- if console==None:
- return {'FINISHED'}
-
- if all:
-
- for l in text.lines:
- console.push(l.body)
-
- else:
- #print(console.prompt)
- console.push(text.current_line.body)
-
-
-
-
-class TestLine(bpy.types.Operator):
- #'''Tooltip'''
- bl_idname = "text.test_line"
- bl_label = "Test line"
-
- all = bpy.props.BoolProperty(default=False)
-
-
-# @classmethod
-# def poll(cls, context):
-# return context.active_object is not None
-
- def execute(self, context):
- #print("test line")
-
- #send_console(context, self.all)
- sc = context.space_data
- text = sc.text
-
- line = text.current_line.body
- console = None
-
- for area in bpy.context.screen.areas:
- if area.type=="CONSOLE":
- from console_python import get_console
-
- console = get_console(hash(area.regions[1]))[0]
-
- if console==None:
- return {'FINISHED'}
-
- command = ""
-
- forindex = line.find("for ")
- if forindex >-1:
-
- var = line[forindex+4:-1]
- var = var[0:var.find(" ")]
- state = line[line.rindex(" ")+1:-1]
-
- command = var + " = " +state+"[0]"
-
-
- else:
- command = line
-
- #print(command)
- try:
- console.push(command)
- except:
- pass
-
- bpy.ops.text.line_break()
-
-
- return {'FINISHED'}
-class SetBreakPoint(bpy.types.Operator):
- bl_idname = "text.set_breakpoint"
- bl_label = "Set Breakpoint"
-
- def execute(self, context):
-
- sc = bpy.context.space_data
- text = sc.text
-
- line = text.current_line
- br = " #breakpoint"
- #print(line.body.find(br))
- if line.body.find(br)>-1:
-
- line.body = line.body.replace(br, "")
- else:
-
- line.body += br
-
- return {'FINISHED'}
-
-class Debug(bpy.types.Operator):
- bl_idname = "text.debug"
- bl_label = "Debug"
-
- def execute(self, context):
-
- binpath = bpy.app.binary_path
-
- addonspath = binpath[0:binpath.rindex("\\")+1]+str(bpy.app.version[0])+"."+str(bpy.app.version[1])+"\\scripts\\addons\\"
-
- print(addonspath)
-
- sc = context.space_data
- text = sc.text
-
- br = " #breakpoint"
-
- filepath = addonspath+"debug.py"
- file = open(filepath, "w")
- file.write("import pdb\n")
-
- for line in text.lines:
- l = line.body
-
- if line.body.find(br)>-1:
- indent = ""
- for letter in line.body:
-
- if not letter.isalpha():
- indent+=letter
- else:
- break
- file.write(l[0:-len(br)]+"\n")
-
- file.write(indent+"pdb.set_trace()\n")
-
- else:
- file.write(line.body+"\n")
-
-
-
- file.close()
-
- import pdb
- import debug
-
- pdb.runcall("debug")
-
-
- return {'FINISHED'}
-
-
-class DebugPanel(bpy.types.Panel):
- bl_label = "Debug"
- bl_idname = "text.test_line"
- bl_space_type = "TEXT_EDITOR"
- bl_region_type = "UI"
- #bl_context = "object"
-
- text = bpy.props.StringProperty()
-
- def draw(self, context):
- layout = self.layout
- row = layout.row()
-
- text = self.text
- row = layout.row()
- row.operator("text.debug", text ="Debug")
- row = layout.row()
- row.operator("text.set_breakpoint")
- row = layout.row()
- row.operator("text.test_line").all=False
- row = layout.row()
- row.operator("text.test_line", text ="Test All").all=True
-
- row = layout.row()
- row.label(text="Coming Soon ...")
-
-
-### ASSIGN A KEY
-
-#section = Input section. "Window, Text, ..."
-#name = operator name or wm.call_menu
-#type = key
-#event = keyboard event (Press, release, ...)
-#mods = array containing key modifiers (["ctrl", "alt", "shift"]
-#propvalue = menu name, if name is set to "wm.call_menu"
-#overwrite doesnt work at the moment
-
-def assignKey(section, name, type, event, mods=[],propvalue = "", overwrite=0):
-
- kconf = bpy.context.window_manager.keyconfigs.active
-
-
- #check section
- validsections = [item.name for item in kconf.keymaps]
- if not section in validsections:
- print(section + " is not a valid section.")
- #print(validsections)
- return False
-
- #check type
- type = type.upper()
- validkeys = [item.identifier for item in bpy.types.KeyMapItem.bl_rna.properties['type'].enum_items]
- if not type in validkeys:
- print(type + " is not a valid key.")
- #print(validkeys)
- return False
-
-
- #check event
- event = event.upper()
- validevents = [item.identifier for item in bpy.types.KeyMapItem.bl_rna.properties['value'].enum_items]
- if not event in validevents:
- print(event + " is not a valid event.")
- #print(validevents)
-
- kmap = kconf.keymaps[section]
-
-
-# get mods
- for i, mod in enumerate(mods):
- mods[i]= mod.lower()
-
- #any, shift, ctrl, alt, oskey
- kmod = [False, False, False, False, False]
-
- if "any" in mods: kmod[0] = True
- if "shift" in mods: kmod[1] = True
- if "ctrl" in mods: kmod[2] = True
- if "alt" in mods: kmod[3] = True
- if "oskey" in mods: kmod[4] = True
-
-# #check if key exist
- kexists = False
-
- for key in kmap.keymap_items:
- keymods = [key.any, key.shift, key.ctrl, key.alt, key.oskey]
- if key.type == type and keymods == kmod:
- kexists = True
- print(key,"key exists")
- break
-
- if kexists:
- #overwrite?
- if overwrite:
- key.idname=name
-
- #key.type = type
-
- else:
- #create key
- key = kmap.keymap_items.new(name, type, event, False)
- key.any = kmod[0]
- key.shift = kmod[1]
- key.ctrl = kmod[2]
- key.alt = kmod[3]
- key.oskey = kmod[4]
-
- if propvalue!="": key.properties.name = propvalue
-
-
-
-
-classes = [Intellisense, Intellioptions, Intellimenu, DebugPanel, TestLine, SetBreakPoint, Debug]
-
-def register():
-
- for c in classes:
- bpy.utils.register_class(c)
-
- assignKey("Text", "text.intellisense", "SPACE", "Press", ["ctrl"])
- assignKey("Text", "text.test_line", "RET", "Press", [],"",1)
-
-def unregister():
- for c in classes:
- bpy.utils.unregister_class(c)
-
-if __name__ == "__main__":
- register()
+# ***** 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
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list