3 # GPytage rightpanel.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")
27 from window
import title
28 from panelfunctions
import mselected
, fileEdited
30 rightview
= gtk
.TreeView()
31 rightselection
= rightview
.get_selection()
33 #set MULTIPLE selection mode
34 rightselection
.set_mode(gtk
.SELECTION_MULTIPLE
)
36 def setListModel(list): #we need to switch the model on click
39 rightview
.set_model(datastore
.lists
[list]) #example
40 namecol
.queue_resize()
41 testcol
.queue_resize()
42 filecol
.queue_resize()
44 print 'RIGHTPANEL: setListModel(); failed'
47 rightview
.set_search_column(0)
49 namecol
= gtk
.TreeViewColumn('Value')
50 testcol
= gtk
.TreeViewColumn('Flags')
51 boolcol
= gtk
.TreeViewColumn() #editable col
52 filecol
= gtk
.TreeViewColumn()
54 rightview
.append_column(namecol
)
55 rightview
.append_column(testcol
)
56 rightview
.append_column(boolcol
)
57 rightview
.append_column(filecol
)
59 cell
= gtk
.CellRendererText()
60 cell1
= gtk
.CellRendererText()
63 namecol
.pack_start(cell
, True)
64 namecol
.set_attributes(cell
, text
=0)
65 namecol
.add_attribute(cell
, "editable", 2)#set row editable
66 namecol
.set_sizing(gtk
.TREE_VIEW_COLUMN_AUTOSIZE
)
68 testcol
.pack_start(cell1
, True)
69 testcol
.set_attributes(cell1
, text
=1)
70 testcol
.add_attribute(cell1
, "editable", 2)#set row editable
71 testcol
.set_expand(True)
72 testcol
.set_sizing(gtk
.TREE_VIEW_COLUMN_AUTOSIZE
)
74 boolcol
.set_visible(False)
75 filecol
.set_visible(False)
77 ###########Scroll Window#########################
78 scroll
= gtk
.ScrolledWindow()
79 scroll
.set_policy(gtk
.POLICY_AUTOMATIC
, gtk
.POLICY_AUTOMATIC
)
80 scroll
.add_with_viewport(rightview
)
82 ############Drag and Drop####################
83 rightview
.set_reorderable(True) # allow inline drag and drop
84 rightview
.enable_model_drag_source(gtk
.gdk
.BUTTON1_MASK
, [('text/plain', 0, 0)], gtk
.gdk
.ACTION_DEFAULT | gtk
.gdk
.ACTION_MOVE
)
85 rightview
.enable_model_drag_dest([('text/plain', 0, 0)], gtk
.gdk
.ACTION_DEFAULT
)
87 rightview
.connect("drag_begin", panelfunctions
.drag_begin_signal
)
88 rightview
.connect("drag_data_delete", panelfunctions
.drag_data_delete_signal
)
89 rightview
.connect("drag_data_received", panelfunctions
.get_dragdestdata
)
92 def edited_cb(cell
, path
, new_text
, col
):
93 """ Indicate file has been edited """
94 model
= rightview
.get_model()
95 model
[path
][col
] = new_text
97 fileEdited() #edit rightpanel to show status
102 """ Insert row below selected row(s) """
104 model
, iterdict
= mselected(treeview
)
105 for iter,value
in iterdict
.iteritems(): #Should only have 1 via right click.. funky results with accelerator.
107 parent
= model
.get_value(iter, 3)
108 new
= model
.insert_after(iter, [None, None, True, parent
])
109 path
= model
.get_path(new
)
110 treeview
.set_cursor_on_cell(path
, namecol
, cell
, True)
114 """ Delete selected row(s) """
116 model
, iterdict
= mselected(treeview
)
117 for iter,value
in iterdict
.iteritems():
123 def commentRow(window
):
124 """ Comment selected row(s) """
126 model
, iterdict
= mselected(treeview
)
127 for iter,value
in iterdict
.iteritems():
129 old
= model
.get_value(iter, 0)
130 if old
.startswith("#") is False:
131 model
.set_value(iter, 0, "#"+old
)
135 def uncommentRow(window
):
136 """ Uncomment selected row(s) """
138 model
, iterdict
= mselected(treeview
)
139 for iter,value
in iterdict
.iteritems():
141 old
= model
.get_value(iter, 0)
142 if old
.startswith("#"):
143 model
.set_value(iter, 0, old
[1:])
147 def clicked(view
, event
):#needs updating from dual panels
148 """ Right click menu for rightview """
149 if event
.button
== 3:
151 irow
= gtk
.MenuItem("Insert Package")
152 irow
.connect("activate", insertrow
)
153 drow
= gtk
.MenuItem("Delete Package")
154 drow
.connect("activate", deleterow
)
158 menu
.popup(None, None, None, event
.button
, event
.time
)
161 cell
.connect("edited", edited_cb
, 0)
162 cell1
.connect("edited", edited_cb
, 1)
163 rightview
.connect("button_press_event", clicked
)