Class: AgEditorOutline
- Inherits:
-
Object
- Object
- AgEditorOutline
- Defined in:
- ext/ae-editor/ae-editor.rb
Instance Attribute Summary collapse
-
#last_opened ⇒ Object
readonly
Returns the value of attribute last_opened.
-
#last_row ⇒ Object
readonly
Returns the value of attribute last_row.
-
#ss ⇒ Object
readonly
Returns the value of attribute ss.
-
#tree_exp ⇒ Object
readonly
Returns the value of attribute tree_exp.
Instance Method Summary collapse
- #build_tree(_sel = nil) ⇒ Object
- #build_tree_from_node(_node, _label_match = nil) ⇒ Object
- #destroy ⇒ Object
- #hide ⇒ Object
-
#initialize(_editor, _frame, _bar, _lang = nil) ⇒ AgEditorOutline
constructor
A new instance of AgEditorOutline.
- #initialize_tree(_frame) ⇒ Object
- #pop_up_menu_tree ⇒ Object
- #select_without_event(_line) ⇒ Object
- #show ⇒ Object
- #shure_select_line(_line, _close_if_opened = true) ⇒ Object
-
#shure_select_node(_node, _close_if_opened = true) ⇒ Object
I think this is “if synced expand out the outline for the current selection”.
- #update_row(_row = 0) ⇒ Object
Constructor Details
#initialize(_editor, _frame, _bar, _lang = nil) ⇒ AgEditorOutline
Returns a new instance of AgEditorOutline.
943 944 945 946 947 948 949 |
# File 'ext/ae-editor/ae-editor.rb', line 943 def initialize(_editor, _frame, , _lang=nil) @editor = _editor @frame = _frame @bar = @lang = _lang initialize_tree(_frame) end |
Instance Attribute Details
#last_opened ⇒ Object (readonly)
Returns the value of attribute last_opened.
942 943 944 |
# File 'ext/ae-editor/ae-editor.rb', line 942 def last_opened @last_opened end |
#last_row ⇒ Object (readonly)
Returns the value of attribute last_row.
939 940 941 |
# File 'ext/ae-editor/ae-editor.rb', line 939 def last_row @last_row end |
#ss ⇒ Object (readonly)
Returns the value of attribute ss.
941 942 943 |
# File 'ext/ae-editor/ae-editor.rb', line 941 def ss @ss end |
#tree_exp ⇒ Object (readonly)
Returns the value of attribute tree_exp.
940 941 942 |
# File 'ext/ae-editor/ae-editor.rb', line 940 def tree_exp @tree_exp end |
Instance Method Details
#build_tree(_sel = nil) ⇒ Object
1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 |
# File 'ext/ae-editor/ae-editor.rb', line 1101 def build_tree(_sel=nil) #Arcadia.console(self,"msg"=>"build for #{@file}") if _sel _label_sel = @tree_exp.itemcget(_sel,'text') end #clear tree begin @tree_exp.delete(@tree_exp.nodes('root')) rescue Exception # workaround on windows @tree_exp.delete(@tree_exp.nodes('root')) end _txt = @editor.text.get('1.0','end') if @editor. if @editor.file && !@editor.modified? @ss = CtagsSourceStructure.new(@editor.file, @editor.) else tmp_file = @editor.create_temp_file begin @ss = CtagsSourceStructure.new(tmp_file, @editor., @lang) ensure File.delete(tmp_file) end end else @ss = RubySourceStructure.new(_txt) end @selected = nil build_tree_from_node(@ss.root, _label_sel) if @selected @tree_exp.selection_add(@selected.rif) @tree_exp.open_tree(@selected.parent.rif) if @selected.parent.rif != 'root' @tree_exp.see(@selected.rif) end end |
#build_tree_from_node(_node, _label_match = nil) ⇒ Object
1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 |
# File 'ext/ae-editor/ae-editor.rb', line 1069 def build_tree_from_node(_node, _label_match=nil) @image_class = Arcadia.image_res(TREE_NODE_CLASS_GIF) @image_module = Arcadia.image_res(TREE_NODE_MODULE_GIF) @image_method = Arcadia.image_res(TREE_NODE_METHOD_GIF) @image_singleton_method = Arcadia.image_res(TREE_NODE_SINGLETON_METHOD_GIF) _sorted_sons = _node.sons.sort for inode in 0.._sorted_sons.length - 1 _son = _sorted_sons[inode] if _son.kind == 'class' _image = @image_class elsif _son.kind == 'module' _image = @image_module elsif _son.kind == 'method' || _son.kind == 'procedure' _image = @image_method elsif _son.kind == 'singleton method' _image = @image_singleton_method end @tree_exp.insert('end', _son.parent.rif ,_son.rif, { 'text' => _son.label , 'helptext' => _son.helptext, #'font'=>$arcadia['conf']['editor.explorer_panel.tree.font'], 'image'=> _image }.update(Arcadia.style('treeitem')) ) if (_label_match) && (_label_match.strip == _son.label.strip) @selected = _son end build_tree_from_node(_son, _label_match) # recursion -- if there are no sons it will do nothing end end |
#destroy ⇒ Object
1051 1052 1053 1054 1055 1056 |
# File 'ext/ae-editor/ae-editor.rb', line 1051 def destroy #@tree_scroll_wrapper.destroy @tree_exp.hide @tree_exp.destroy Tk.update end |
#hide ⇒ Object
1064 1065 1066 1067 |
# File 'ext/ae-editor/ae-editor.rb', line 1064 def hide @tree_exp.hide #@tree_scroll_wrapper.hide end |
#initialize_tree(_frame) ⇒ Object
1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 |
# File 'ext/ae-editor/ae-editor.rb', line 1004 def initialize_tree(_frame) _tree_goto = proc{|_self| sync_val = @bar.sync @bar.sync=false begin #_line = _self.selection_get[0] _line = _self.selected _index =_line.to_s+'.0' _hinner_text = @tree_exp.itemcget(_line,'text').strip _editor_line = @editor.text.get(_index, _index+ ' lineend') if !_editor_line.include?(_hinner_text) Arcadia.console(self, 'msg'=>"#{Arcadia.text('ext.editor.outline.rebuild_tree')} \n") if @tree_thread && @tree_thread.alive? @tree_thread.exit # kill the old tree end @tree_thread = Thread.new{ build_tree(_line) Tk.update } _line = _self.selected _index =_line.to_s+'.0' end @editor.text.set_focus @editor.text.see(_index) @editor.text.tag_remove('selected','1.0','end') @editor.text.tag_add('selected',_line.to_s+'.0',(_line+1).to_s+'.0') ensure @bar.sync = sync_val end } do_open_command = proc{|no| @last_opened = no } @tree_exp = BWidgetTreePatched.new(_frame, Arcadia.style('treepanel')){ showlines false deltay 18 dragenabled true selectcommand proc{ _tree_goto.call(self) } opencmd do_open_command crosscloseimage Arcadia.image_res(ARROWRIGHT_GIF) crossopenimage Arcadia.image_res(ARROWDOWN_GIF) } @tree_exp.extend(TkScrollableWidget) self.show end |
#pop_up_menu_tree ⇒ Object
1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 |
# File 'ext/ae-editor/ae-editor.rb', line 1138 def @pop_up_tree = TkMenu.new( :parent=>@tree_exp, :tearoff=>0, :title => 'Menu tree' ) @pop_up_tree.extend(TkAutoPostMenu) @pop_up_tree.configure(Arcadia.style('menu')) #Arcadia.instance.main_menu.update_style(@pop_up_tree) @pop_up_tree.insert('end', :command, :label=> Arcadia.text('ext.editor.outline.menu.rebuild'), :hidemargin => false, :command=> proc{build_tree} ) @tree_exp.areabind_append("Button-3", proc{|x,y| _x = TkWinfo.pointerx(@tree_exp) _y = TkWinfo.pointery(@tree_exp) @pop_up_tree.popup(_x,_y) }, "%x %y") end |
#select_without_event(_line) ⇒ Object
995 996 997 998 999 1000 1001 1002 |
# File 'ext/ae-editor/ae-editor.rb', line 995 def select_without_event(_line) if @ss _node=@ss.deep_node_by_line(@ss.root, _line) if _node && @tree_exp.exist?(_node.rif) && _node.rif!='root' shure_select_node(_node) end end end |
#show ⇒ Object
1058 1059 1060 1061 1062 |
# File 'ext/ae-editor/ae-editor.rb', line 1058 def show #@tree_scroll_wrapper.show(0,26) @tree_exp.show(0,0) Tk.update end |
#shure_select_line(_line, _close_if_opened = true) ⇒ Object
986 987 988 989 990 991 992 993 |
# File 'ext/ae-editor/ae-editor.rb', line 986 def shure_select_line(_line, _close_if_opened = true) if @ss && _line node = @ss.node_by_line(@ss.root, _line) else node = SourceStructure.root end shure_select_node(node, _close_if_opened) end |
#shure_select_node(_node, _close_if_opened = true) ⇒ Object
I think this is “if synced expand out the outline for the current selection”
959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 |
# File 'ext/ae-editor/ae-editor.rb', line 959 def shure_select_node(_node, _close_if_opened = true) return if @selecting_node #return if @tree_exp.exist?(_node.rif) @selecting_node = true _proc = @tree_exp.selectcommand @tree_exp.selectcommand(nil) begin @tree_exp.selection_clear @tree_exp.selection_add(_node.rif) @opened = false to_open = @last_open_node parent = _node.parent while !parent.nil? && parent.rif != 'root' @tree_exp.open_tree(parent.rif, false) @opened = to_open==parent.rif || @opened @last_open_node=parent.rif parent = parent.parent end @tree_exp.close_tree(to_open) if _close_if_opened && to_open && !@opened @tree_exp.see(_node.rif) ensure @tree_exp.selectcommand(_proc) @selecting_node = false end @tree_exp.call_after_next_show_h_scroll(proc{Tk.update;@tree_exp.see(_node.rif)}) end |
#update_row(_row = 0) ⇒ Object
951 952 953 954 955 956 |
# File 'ext/ae-editor/ae-editor.rb', line 951 def update_row(_row=0) @last_row=_row if @bar.is_sync_on? select_without_event(_row) end end |