Revision 737

View differences:

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