3 # GPytage panelfunctions.py module
5 ############################################################################
6 # Copyright (C) 2008 by Kenneth Prugh #
9 # This program is free software; you can redistribute it and#or modify #
10 # it under the terms of the GNU General Public License as published by #
11 # the Free Software Foundation under version 2 of the license. #
13 # This program is distributed in the hope that it will be useful, #
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
16 # GNU General Public License for more details. #
18 # You should have received a copy of the GNU General Public License #
19 # along with this program; if not, write to the #
20 # Free Software Foundation, Inc., #
21 # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #
22 ############################################################################
24 import pygtk
; pygtk
.require("2.0")
28 def get_dragdestdata(treeview
, context
, x
, y
, selection
, info
, etime
):
29 iter, value
= cselected(treeview
,x
,y
)
30 model
= treeview
.get_model()
33 print data
,"global data"
34 drop_info
= treeview
.get_dest_row_at_pos(x
,y
)
35 print "DROP INFO IS:"; print drop_info
37 path
, position
= drop_info
38 iteri
= model
.get_iter(path
)
39 if model
.get_value(iteri
, 2):
40 if (position
== gtk
.TREE_VIEW_DROP_BEFORE
or position
== gtk
.TREE_VIEW_DROP_INTO_OR_BEFORE
):
42 model
.insert_before(iteri
, row
[0:4])
44 for row
in reversed(ldata
):
45 model
.insert_after(iteri
, row
[0:4])
51 model
.append(row
[0:4])
52 print 'end of treeview'
56 model
.remove(model
.get_iter(row
[4].get_path()))
57 from window
import title
61 else: # File to File dragging
62 # rightpanel -> leftpanel logic goes here.
64 parent
= model
.get_value(iter, 3).strip('*')
65 oldName
= model
.get_value(iter, 0).strip('*')
67 if model
.iter_children(iter):#has children [subfiles]
69 else: #doesn't have children
70 newName
= "*%s" % oldName
71 model
.set_value(iter, 0, newName
)
73 print ldata
,"DATA TO APPEND"
75 datastore
.lists
[oldName
].append(row
[0:4])
78 from rightpanel
import rightview
79 rmodel
= rightview
.get_model()
80 rmodel
.remove(rmodel
.get_iter(row
[4].get_path()))
81 from leftpanel
import leftview
82 lmodel
= leftview
.get_model()
83 lselection
.select_path(lmodel
.get_path(lselected
[1]))
87 def drag_begin_signal(treeview
, dragcontext
, *args
):
88 """ Grab model and data begin dragged """
93 from leftpanel
import leftview
94 lselection
= leftview
.get_selection()
95 lselected
= lselection
.get_selected()
96 data
= [] #master container
97 #get the selected rows
98 model
= treeview
.get_model()
99 rows
= treeview
.get_selection().get_selected_rows()[1]
100 for path
in rows
: #each line is a path to the row
101 print "DRAG_BEGIN_SIGNAL_PATHS:"; print path
102 cdata
= [] #current data
103 iter = model
.get_iter(path
)
104 cdata
.append(model
.get_value(iter, 0))
105 cdata
.append(model
.get_value(iter, 1))
106 cdata
.append(model
.get_value(iter, 2))
107 cdata
.append(model
.get_value(iter, 3))
108 cdata
.append(gtk
.TreeRowReference(model
, path
))
110 print "MASTER DATA CONTAINER:"
113 def drag_data_delete_signal(*args
):
114 """ Delete begin signals data """
115 print "drag data delete signal"
118 def cselected(treeview
, x
, y
):
119 """ Return iter:value from current coordinates """
121 selection
= treeview
.get_dest_row_at_pos(x
,y
) #tuple path,dropposition
122 model
= treeview
.get_model()
123 iter = model
.get_iter(selection
[0])
125 value
= model
.get_value(iter,2)
128 print model
.get_value(iter,0)
131 model
= treeview
.get_model()
132 iter = model
[-1].iter
134 value
= model
.get_value(iter,2)
140 def selected(treeview
): #helper function
141 """ Return iter of currently selected row """
142 selection
= treeview
.get_selection()
143 model
, iter = selection
.get_selected()
145 value
= model
.get_value(iter, 2)
150 def mselected(treeview
):
151 """ Return model and dictionary of iters:values from currently selected rows """
152 selection
= treeview
.get_selection()
153 model
, iters
= selection
.get_selected_rows() #iters == paths
156 iref
= gtk
.TreeRowReference(model
, i
)
157 iter = model
.get_iter(i
)
159 iterdict
[iter] = model
.get_value(iter, 2)
161 iterdict
[iter] = False
162 return model
, iterdict
164 def fileEdited(): #leftpanel
165 """ Mark a file as edited """
166 from leftpanel
import leftview
167 model
= leftview
.get_model()
168 iter, value
= selected(leftview
)
169 oldName
= model
.get_value(iter, 0).strip('*')
170 newName
= "*%s" % oldName
171 model
.set_value(iter, 0, newName
)
173 def switchListView(widget
, drag_context
, x
, y
, timestamp
, *args
):
174 """ Hilights leftview drop target during drag operation """
175 from leftpanel
import leftview
177 model
= leftview
.get_model()
178 path
= leftview
.get_dest_row_at_pos(x
, y
)
179 leftview
.expand_row(path
[0], True)
180 #iter = model.get_iter(path[0])
181 treeselection
= leftview
.get_selection()
182 treeselection
.select_path(path
[0])