You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@gump.apache.org by ru...@apache.org on 2003/05/01 04:56:43 UTC
cvs commit: jakarta-gump/python/gump model.py view.py
rubys 2003/04/30 19:56:42
Modified: python/gump model.py view.py
Log:
Select project Ant and press F5
Revision Changes Path
1.3 +17 -3 jakarta-gump/python/gump/model.py
Index: model.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/model.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- model.py 30 Apr 2003 11:11:32 -0000 1.2
+++ model.py 1 May 2003 02:56:42 -0000 1.3
@@ -245,6 +245,20 @@
else:
self.option.append(d2)
+ def classpath(self):
+ result=[]
+
+ # start with the work directories
+ srcdir=Module.list[self.module].srcdir
+ for work in self.work:
+ result.append(os.path.normpath(os.path.join(srcdir,work.nested)))
+
+ # add in depends and options
+ for depend in self.depend+self.option:
+ result+=[jar.path for jar in depend.jars()]
+
+ return result
+
# represents an <ant/> element
class Ant(GumpBase):
def init(self):
1.8 +51 -21 jakarta-gump/python/gump/view.py
Index: view.py
===================================================================
RCS file: /home/cvs/jakarta-gump/python/gump/view.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- view.py 30 Apr 2003 11:11:32 -0000 1.7
+++ view.py 1 May 2003 02:56:42 -0000 1.8
@@ -63,6 +63,8 @@
"""
import os
+import popen2
+import thread
import sys
import logging
@@ -77,13 +79,17 @@
from gump.gen import xmlize
from gump.model import Module, Project
+classpath=os.environ['CLASSPATH'].split(os.pathsep)
+
class gumpview(wxApp):
# model
mySubs=None
items=None
build_sequence=None
+ project=None
# view
+ frame=None
tree=None
list=None
data=None
@@ -94,8 +100,8 @@
def OnInit(self):
# layout
- frame = wxFrame(NULL, -1, "Gump Workspace Viewer")
- split1 = wxSplitterWindow(frame,-1)
+ self.frame = wxFrame(NULL, -1, "Gump Workspace Viewer")
+ split1 = wxSplitterWindow(self.frame,-1)
split2 = wxSplitterWindow(split1,-1)
notebook = wxNotebook(split2, -1, style=wxCLIP_CHILDREN)
@@ -114,8 +120,8 @@
notebook.AddPage(self.classpath, 'classpath')
notebook.AddPage(self.property, 'property')
split2.SplitHorizontally(notebook, self.data)
- self.SetTopWindow(frame)
- frame.Show(true)
+ self.SetTopWindow(self.frame)
+ self.frame.Show(true)
# resize
split1.SetMinimumPaneSize(20)
@@ -127,6 +133,7 @@
EVT_TREE_SEL_CHANGED(self, self.tree.GetId(), self.selectTree)
EVT_LIST_ITEM_SELECTED(self, self.list.GetId(), self.selectItem)
EVT_LIST_ITEM_SELECTED(self, self.dependencies.GetId(), self.selectItem2)
+ EVT_KEY_UP(self, self.OnKeyUp)
return true
# list all modules and their projects
@@ -145,12 +152,29 @@
self.tree.Expand(root)
+ def OnKeyUp(self,event):
+ if not event.GetKeyCode()==WXK_F5: return
+ if not self.project or not self.project.ant: return
+ module=Module.list[self.project.module]
+
+ os.chdir(os.path.join(module.srcdir,self.project.ant.basedir or ''))
+ os.environ['CLASSPATH']=os.pathsep.join(classpath+self.project.classpath())
+ cmd="java org.apache.tools.ant.Main"
+ for property in self.workspace.property+self.project.ant.property:
+ cmd+=" -D"+property.name+"="+property.value
+ if self.project.ant.target: cmd+=" "+self.project.ant.target
+
+ self.data.Clear()
+ compileThread(cmd,self.data).Start()
+
# select a single feed and display titles from each item
def selectTree(self, event):
self.showProject(self.tree.GetPyData(event.GetItem()))
def showProject(self,project):
if not project or not isinstance(project,Project): return
+ self.project=project
+ self.frame.SetTitle(project.name)
# gather a list of projects which reference this project
self.items=[]
@@ -210,20 +234,9 @@
if not self.classpath.GetColumn(0):
self.classpath.InsertColumn(0, 'Path')
- i=0
-
- # add in work directories
- srcdir=Module.list[project.module].srcdir
- for work in project.work:
- workpath=os.path.normpath(os.path.join(srcdir,work.nested))
- self.classpath.InsertStringItem(i,workpath)
- i=i+1
-
- # add in depends and options
- for depend in project.depend+project.option:
- for jar in depend.jars():
- self.classpath.InsertStringItem(i,jar.path)
- i=i+1
+ classpath=project.classpath()
+ for i in range(0,len(classpath)):
+ self.classpath.InsertStringItem(i,classpath[i])
self.classpath.SetColumnWidth(0,wxLIST_AUTOSIZE_USEHEADER)
@@ -265,6 +278,23 @@
def unload(self):
self.mItem.clear()
self.pItem.clear()
+
+class compileThread:
+ def __init__(self,cmd,data):
+ self.cmd=cmd
+ self.data=data
+ def Start(self):
+ self.running = 1
+ thread.start_new_thread(self.Run,())
+ def Stop(self):
+ self.running = 0
+ def Run(self):
+ (stdout,stdin)=popen2.popen2(self.cmd + ' 2>&1')
+ stdin.close()
+ while 1:
+ line = stdout.readline()
+ if not line: break
+ self.data.AppendText(line)
if __name__ == '__main__':
app = gumpview(0)