Add manifest to manifest
[gpytage.git] / panelfunctions.py
blobd7890aefee818f0bfd0a2fd60f01a79c7ab0836f
1 #!/usr/bin/env python
3 # GPytage panelfunctions.py module
5 ############################################################################
6 # Copyright (C) 2008 by Kenneth Prugh #
7 # ken69267@gmail.com #
8 # #
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. #
12 # #
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. #
17 # `````` #
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")
25 import gtk
26 import datastore
28 def get_dragdestdata(treeview, context, x, y, selection, info, etime):
29 iter, value = cselected(treeview,x,y)
30 model = treeview.get_model()
31 if value == True:
32 ldata = data
33 print data,"global data"
34 drop_info = treeview.get_dest_row_at_pos(x,y)
35 print "DROP INFO IS:"; print drop_info
36 if 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):
41 for row in ldata:
42 model.insert_before(iteri, row[0:4])
43 else:
44 for row in reversed(ldata):
45 model.insert_after(iteri, row[0:4])
46 else:
47 return
49 else:
50 for row in ldata:
51 model.append(row[0:4])
52 print 'end of treeview'
53 #delete dragged rows
54 for row in ldata:
55 print row[4]
56 model.remove(model.get_iter(row[4].get_path()))
57 from window import title
58 title("* GPytage")
59 fileEdited()
60 return
61 else: # File to File dragging
62 # rightpanel -> leftpanel logic goes here.
63 ldata = data
64 parent = model.get_value(iter, 3).strip('*')
65 oldName = model.get_value(iter, 0).strip('*')
66 print parent
67 if model.iter_children(iter):#has children [subfiles]
68 print "has children"
69 else: #doesn't have children
70 newName = "*%s" % oldName
71 model.set_value(iter, 0, newName)
72 # append the data
73 print ldata,"DATA TO APPEND"
74 for row in ldata:
75 datastore.lists[oldName].append(row[0:4])
76 #nuke what we moved
77 for row in ldata:
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]))
84 fileEdited()
87 def drag_begin_signal(treeview, dragcontext, *args):
88 """ Grab model and data begin dragged """
89 #global bmodel
90 global data
91 global lselection
92 global lselected
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))
109 data.append(cdata)
110 print "MASTER DATA CONTAINER:"
111 print data
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 """
120 try:
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])
124 try:
125 value = model.get_value(iter,2)
126 except:
127 value = False
128 print model.get_value(iter,0)
129 return iter,value
130 except TypeError:
131 model = treeview.get_model()
132 iter = model[-1].iter
133 try:
134 value = model.get_value(iter,2)
135 except:
136 value = False
137 return iter,value
140 def selected(treeview): #helper function
141 """ Return iter of currently selected row """
142 selection = treeview.get_selection()
143 model, iter = selection.get_selected()
144 try:
145 value = model.get_value(iter, 2)
146 except:
147 value = False
148 return iter, value
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
154 iterdict = {}
155 for i in iters:
156 iref = gtk.TreeRowReference(model, i)
157 iter = model.get_iter(i)
158 try:
159 iterdict[iter] = model.get_value(iter, 2)
160 except:
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
176 import rightpanel
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])