Revision 737
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.app/org.gvsig.scripting.app.mainplugin/src/main/resources-plugin/scripting/scripts/tools/makedocs/makedocs.py | ||
---|---|---|
1 | 1 |
|
2 | 2 |
from gvsig import * |
3 |
from commonsdialog import * |
|
3 |
from gvsig.commonsdialog import * |
|
4 |
from gvsig.libs.formpanel import FormPanel, getResource |
|
4 | 5 |
|
5 | 6 |
import os |
6 | 7 |
import os.path |
... | ... | |
10 | 11 |
import threading |
11 | 12 |
import logging |
12 | 13 |
|
13 |
from libs.formpanel import FormPanel |
|
14 | 14 |
|
15 | 15 |
from java.awt import Dimension |
16 | 16 |
|
17 |
import pynliner
|
|
17 |
from org.gvsig.scripting.swing.api import ScriptingSwingLocator
|
|
18 | 18 |
|
19 |
|
|
20 |
class CSSInliner(object): |
|
21 |
def __init__(self): |
|
22 |
pass |
|
23 |
|
|
24 |
def getsafestr(self, s): |
|
25 |
s = repr(s) |
|
26 |
s = s.replace("\\n","\n") |
|
27 |
s = s.replace("\\'","'") |
|
28 |
|
|
29 |
s = s[2:-1] |
|
30 |
return s |
|
31 |
|
|
32 |
def writetofile(self, html,pathname, mode="w"): |
|
33 |
f=open("/tmp/cssinliner.tmp",mode) |
|
34 |
f.write(html) |
|
35 |
f.close() |
|
36 |
shutil.copyfile("/tmp/cssinliner.tmp", pathname) |
|
37 |
|
|
38 |
def replaces(self, html): |
|
39 |
html=html.replace('<div>JavaScript is disabled on your browser.</div>','') |
|
40 |
html=html.replace('background-color: #fff;','') |
|
41 |
html=html.replace('background-color: #fff"','"') |
|
42 |
html=html.replace('class="blockList" style="list-style-type: disc; ','class="blockList" style="list-style-type: none; ') |
|
43 |
html=html.replace('class="blockListLast" style="list-style-type: disc;', 'class="blockListLast" style="list-style-type: none;') |
|
44 |
html=html.replace('class="inheritance" style="list-style-type: disc;','class="inheritance" style="list-style-type: none;') |
|
45 |
html=html.replace(' border-top: none','') |
|
46 |
html=html.replace('font-size: 1.1em;', 'font-size: medium;') |
|
47 |
html=html.replace('font-size: 1.2em;', 'font-size: medium;') |
|
48 |
html=html.replace('font-size: 1.3em;', 'font-size: medium;') |
|
49 |
html=html.replace('font-size: 1.4em;', 'font-size: large;') |
|
50 |
html=html.replace('font-size: 1.1em"', 'font-size: medium"') |
|
51 |
html=html.replace('font-size: 1.2em"', 'font-size: medium"') |
|
52 |
html=html.replace('font-size: 1.3em"', 'font-size: medium"') |
|
53 |
html=html.replace('font-size: 1.4em"', 'font-size: large"') |
|
54 |
html=html.replace('font-size: 76%;', 'font-size: small;') |
|
55 |
return html |
|
56 |
|
|
57 |
def __call__(pathname): |
|
58 |
self.process(pathname) |
|
59 |
|
|
60 |
def process(self, pathname): |
|
61 |
""" |
|
62 |
Para que se vean correctamente los javadocs en el JavaHelp |
|
63 |
hay que transformar las refrencias al CSS a sentencias css embebidas |
|
64 |
en cada tag. |
|
65 |
""" |
|
66 |
html=pynliner.fromURL("file://"+pathname) |
|
67 |
|
|
68 |
""" |
|
69 |
Ademas hay algunas cosas del CSS que no se ven bien en el visor del |
|
70 |
JavaHelp, asi que las parcheamos reemplazandolas por otros valores. |
|
71 |
""" |
|
72 |
html = self.replaces(html) |
|
73 |
|
|
74 |
try: |
|
75 |
self.writetofile(html,pathname) |
|
76 |
except UnicodeEncodeError: |
|
77 |
try: |
|
78 |
html = html.encode('ISO-8859-1') |
|
79 |
self.writetofile(html,pathname) |
|
80 |
except: |
|
81 |
try: |
|
82 |
self.writetofile(self.getsafestr(html),pathname) |
|
83 |
except: |
|
84 |
pass |
|
85 |
except Exception,ex: |
|
86 |
print "\n>>> Error procesando fichero. " + str(ex) |
|
87 |
except: |
|
88 |
print "\n>>> Error procesando fichero." |
|
89 |
|
|
90 |
|
|
91 |
|
|
92 | 19 |
class MakeDocs(FormPanel, threading.Thread): |
93 | 20 |
def __init__(self,workspace,projects,outputfolder): |
94 | 21 |
threading.Thread.__init__(self) |
95 |
FormPanel.__init__(self,script.getResource("makedocs.xml")) |
|
96 |
#self.getPanel().setPreferredSize(Dimension(800,190)) |
|
22 |
FormPanel.__init__(self, getResource(__file__,"makedocs.xml")) |
|
23 |
self.setName("Javadoc creator") |
|
24 |
self.setPreferredSize(700,230) |
|
97 | 25 |
self.canceled = False |
98 | 26 |
|
99 | 27 |
self.workspace = workspace |
... | ... | |
105 | 33 |
def findJavaSources(self,workspace,project): |
106 | 34 |
projectFolder = os.path.join(workspace,project) |
107 | 35 |
sources = list() |
108 |
#print projectFolder |
|
109 | 36 |
for root, dirs, files in os.walk(projectFolder): |
110 | 37 |
for file in files: |
111 | 38 |
if file == "pom.xml": |
... | ... | |
120 | 47 |
sources = list() |
121 | 48 |
for project, url in projects: |
122 | 49 |
sources.extend(self.findJavaSources(workspace,project)) |
50 |
if project == "org.gvsig.scripting": |
|
51 |
sources.append(os.path.join( |
|
52 |
workspace,project,"org.gvsig.scripting.app","org.gvsig.scripting.app.mainplugin", |
|
53 |
"src","main","resources-plugin","scripting","lib","gvsig","javadocs" |
|
54 |
)) |
|
123 | 55 |
return sources |
124 | 56 |
|
125 | 57 |
def calculateCountFromSources(self,sources): |
... | ... | |
186 | 118 |
argsfile = file("javadoc_args","w") |
187 | 119 |
argsfile.write("-nonavbar\n") |
188 | 120 |
argsfile.write("-encoding ISO-8859-1\n") |
189 |
argsfile.write("-subpackages org\n") |
|
121 |
argsfile.write("-subpackages org:scripting\n")
|
|
190 | 122 |
argsfile.write("-sourcepath ") |
191 | 123 |
for source in sources: |
192 | 124 |
argsfile.write(":%s" % source) |
... | ... | |
227 | 159 |
loadingcount+=1 |
228 | 160 |
self.pgbProgreso.setValue(loadingcount) |
229 | 161 |
self.message2(line[33:]) |
230 |
|
|
231 |
if self.chkProcesarCSS.isSelected(): |
|
232 |
self.message("Preparando procesdado de HTMLs (CSS inliner)...") |
|
233 |
self.message2("") |
|
234 |
path=os.path.join(outputpath,"html","org") |
|
235 |
|
|
236 |
listfname = script.getResource("htmls.txt").getAbsolutePath() |
|
237 |
lastfname = script.getResource("lasthtml.txt").getAbsolutePath() |
|
238 |
if self.chkContinuarProcesoAnterior.isSelected() and os.path.exists(listfname) and os.path.exists(lastfname): |
|
239 |
ff = open(lastfname,"r") |
|
240 |
skipto = ff.read() |
|
241 |
ff.close() |
|
242 |
if skipto in (None,"","\n"): |
|
243 |
skipto = None |
|
244 |
ff = open(listfname,"r") |
|
245 |
htmlscount = 0 |
|
246 |
for fname in ff: |
|
247 |
htmlscount +=1 |
|
248 |
ff.close() |
|
249 |
else: |
|
250 |
skipto = None |
|
251 |
htmlscount = self.calculateHTMLFileList(path,listfname) |
|
252 |
|
|
253 |
self.pgbProgreso.setMaximum(htmlscount) |
|
254 |
self.pgbProgreso.setValue(0) |
|
255 |
self.pgbProgreso.setIndeterminate(False) |
|
256 |
self.message("Procesando HTMLs (CSS inliner)...") |
|
257 |
cssinliner = CSSInliner() |
|
258 |
htmlscount = 0 |
|
259 |
listfile = open(listfname,"r") |
|
260 |
for fname in listfile: |
|
261 |
htmlscount+=1 |
|
262 |
self.message2(fname) |
|
263 |
self.pgbProgreso.setValue(htmlscount) |
|
264 |
if skipto != None: |
|
265 |
if skipto != fname: |
|
266 |
continue |
|
267 |
skipto = None |
|
268 |
if self.canceled: |
|
269 |
ff = open(lastfname,"w") |
|
270 |
ff.write(fname) |
|
271 |
ff.close() |
|
272 |
break |
|
273 |
cssinliner.process(fname) |
|
274 | 162 |
|
275 | 163 |
self.message("Proceso terminado") |
276 | 164 |
self.message2("") |
... | ... | |
304 | 192 |
self.btnProcesar.setEnabled(False) |
305 | 193 |
self.btnCerrar.setText("Cancelar") |
306 | 194 |
self.start() |
195 |
|
|
196 |
def showWindow(self,title="Crear javadocs"): |
|
197 |
windowManager = ScriptingSwingLocator.getUIManager() |
|
198 |
windowManager.showWindow(self.asJComponent(),title) |
|
307 | 199 |
|
308 | 200 |
def run(self): |
309 | 201 |
self.mkjavadoc( |
... | ... | |
318 | 210 |
|
319 | 211 |
|
320 | 212 |
def main(*args): |
321 |
workspace = "/home/jjdelcerro/datos/devel"
|
|
322 |
outputfolder = "/home/jjdelcerro/datos/temp/javadocs"
|
|
213 |
workspace = "/home/jjdelcerro/data/devel/temp"
|
|
214 |
outputfolder = workspace + "/javadocs"
|
|
323 | 215 |
projects = ( |
216 |
("org.gvsig.scripting",None), |
|
217 |
("org.gvsig.tools",None), |
|
218 |
("org.gvsig.desktop",None), |
|
219 |
("org.gvsig.gdal",None), |
|
220 |
("org.gvsig.raster",None), |
|
221 |
("org.gvsig.raster.gdal",None), |
|
222 |
("org.gvsig.geoprocess",None), |
|
223 |
("org.gvsig.3d",None), |
|
324 | 224 |
("org.gvsig.app.document.layout2.app",None), |
325 | 225 |
("org.gvsig.attributeeditor",None), |
326 |
("org.gvsig.catalog",None), |
|
327 | 226 |
("org.gvsig.chart",None), |
328 |
("org.gvsig.legend.dotdensity.app.mainplugin",None), |
|
329 |
("org.gvsig.raster.principalcomponents",None), |
|
330 | 227 |
("org.gvsig.complexlegend",None), |
331 |
("org.gvsig.legend.graduatedsymbols.app.mainplugin",None), |
|
228 |
("org.gvsig.derivedgeometries",None), |
|
229 |
("org.gvsig.dgn",None), |
|
230 |
("org.gvsig.downloader",None), |
|
231 |
("org.gvsig.dwg",None), |
|
232 |
("org.gvsig.dxf",None), |
|
233 |
("org.gvsig.dyschromatopsia",None), |
|
234 |
("org.gvsig.educa.portableview",None), |
|
235 |
("org.gvsig.expressionfield",None), |
|
236 |
("org.gvsig.gpe",None), |
|
237 |
("org.gvsig.hyperlink.app",None), |
|
238 |
("org.gvsig.jexcel",None), |
|
239 |
("org.gvsig.jvmpreferences",None), |
|
240 |
("org.gvsig.legend.dotdensity.app",None), |
|
241 |
("org.gvsig.legend.graduatedsymbols.app",None), |
|
242 |
("org.gvsig.legend.proportionalsymbols.app",None), |
|
243 |
("org.gvsig.legend.quantitybycategory.app",None), |
|
244 |
("org.gvsig.legend.vectorfilterexpression.app",None), |
|
245 |
("org.gvsig.mapsheets.app",None), |
|
246 |
("org.gvsig.postgresql",None), |
|
247 |
("org.gvsig.projection.jcrs",None), |
|
248 |
("org.gvsig.raster.ermapper",None), |
|
249 |
("org.gvsig.raster.georeferencing",None), |
|
250 |
("org.gvsig.raster.lizardtech",None), |
|
251 |
("org.gvsig.raster.multifile",None), |
|
252 |
("org.gvsig.raster.netcdf",None), |
|
253 |
("org.gvsig.raster.osm",None), |
|
254 |
("org.gvsig.raster.postgis",None), |
|
255 |
("org.gvsig.raster.principalcomponents",None), |
|
332 | 256 |
("org.gvsig.raster.reproject",None), |
333 |
("org.gvsig.legend.proportionalsymbols.app.mainplugin",None), |
|
334 | 257 |
("org.gvsig.raster.roimask",None), |
335 |
("org.gvsig.derivedgeometries",None), |
|
336 |
("org.gvsig.legend.quantitybycategory.app.mainplugin",None), |
|
337 | 258 |
("org.gvsig.raster.tasseledcap",None), |
338 |
("org.gvsig.desktop",None), |
|
339 |
("org.gvsig.legend.vectorfilterexpression.app.mainplugin",None), |
|
340 | 259 |
("org.gvsig.raster.tilecache",None), |
341 |
("org.gvsig.mapsheets.app",None), |
|
342 | 260 |
("org.gvsig.raster.tools",None), |
343 |
("org.gvsig.projection.api",None), |
|
344 |
("org.gvsig.dyschromatopsia",None), |
|
345 |
("org.gvsig.projection.jcrs",None), |
|
346 |
("org.gvsig.scripting",None), |
|
347 |
("org.gvsig.publish",None), |
|
348 |
("org.gvsig.expressionfield",None), |
|
349 |
("org.gvsig.raster",None), |
|
261 |
("org.gvsig.raster.wms",None), |
|
262 |
("org.gvsig.raster.wcs",None), |
|
263 |
("org.gvsig.raster.wmts",None), |
|
264 |
("org.gvsig.seismic",None), |
|
350 | 265 |
("org.gvsig.sld",None), |
351 |
("org.gvsig.gazetteer",None), |
|
352 |
("org.gvsig.tools",None), |
|
353 | 266 |
("org.gvsig.vectorediting",None), |
354 |
("org.gvsig.geoprocess",None), |
|
355 |
("org.gvsig.raster.georeferencing",None), |
|
356 | 267 |
("org.gvsig.vectorediting.symmetry",None), |
357 |
("org.gvsig.hyperlink.app",None), |
|
358 |
("org.gvsig.toolbox","http://devel.gvsig.org/svn/gvsig-toolbox/org.gvsig.toolbox/trunk/org.gvsig.toolbox/"), |
|
268 |
("org.gvsig.vectorediting.offset",None), |
|
269 |
("org.gvsig.wfs.app",None), |
|
270 |
("org.gvsig.customize.app",None), |
|
271 |
("org.gvsig.catalog",None), |
|
272 |
("org.gvsig.gazetteer",None), |
|
273 |
("org.gvsig.publish",None), |
|
274 |
("org.gvsig.webmap",None), |
|
275 |
("org.gvsig.googlemaps",None), |
|
276 |
("org.gvsig.bingmaps",None), |
|
277 |
("org.gvsig.toolbox", None), |
|
359 | 278 |
) |
360 | 279 |
makedocs = MakeDocs(workspace,projects,outputfolder) |
361 | 280 |
makedocs.showWindow("Crear javadocs") |
362 | 281 |
#makedocs.run() |
363 | 282 |
|
364 |
|
|
365 |
|
Also available in: Unified diff