Skip to content

Commit

Permalink
Merge pull request #9 from Aulla/master
Browse files Browse the repository at this point in the history
traigo mas cambios
  • Loading branch information
Miguel-J committed Sep 26, 2017
2 parents 8397acd + 30f08d5 commit 17b661e
Show file tree
Hide file tree
Showing 4 changed files with 142 additions and 26 deletions.
2 changes: 1 addition & 1 deletion pineboolib/PNSqlDrivers.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from gi import importlib
import importlib
from pineboolib.flcontrols import ProjectClass

class PNSqlDrivers(ProjectClass):
Expand Down
32 changes: 30 additions & 2 deletions pineboolib/flparser/pytnyzer.py
Expand Up @@ -26,6 +26,10 @@ def id_translate(name):

if name == "startsWith": name = "startswith"
if name == "endsWith": name = "endswith"
if name == "lastIndexOf": name = "rfind"
if name == "File": name = "qsatype.File"
if name == "findRev": name = "find"
if name == "toLowerCase": name = "lower"
return name

ast_class_types = []
Expand Down Expand Up @@ -386,6 +390,11 @@ def generate(self, **kwargs):
yield "line", line

yield "line", "while_pass = True"
yield "line", "try:"
yield "begin", "block-error-catch" # Si es por ejemplo un charAt y hace out of index nos saca del while
yield "line", "%s" % (" ".join(main_expr))
yield "end", "block-error-catch"
yield "line", "except: break"
yield "end", "block-for"

class ForIn(ASTPython):
Expand Down Expand Up @@ -512,7 +521,8 @@ def generate(self, force_value = False, **kwargs):
expr = 0
for dtype, data in parse_ast(value).generate(isolate = False):

if self.elem.get("type",None) == "Array" and data == "[]":
#if self.elem.get("type",None) == "Array" and data == "[]":
if data == "[]":
yield "expr", "qsatype.Array()"
expr += 1
continue
Expand Down Expand Up @@ -718,6 +728,8 @@ def generate(self, **kwargs):
"isEmpty()",
"left" ,
"right" ,
"mid" ,
"charAt"
]
for member in replace_members:
for idx,arg in enumerate(arguments):
Expand All @@ -741,10 +753,26 @@ def generate(self, **kwargs):
value = arg[6:]
value = value[:len(value) - 1]
arguments = ["%s[(len(%s) - (%s)):]" % (".".join(part1),".".join(part1), value)] + part2
elif member == "mid":
value = arg[4:]
value = value[:len(value) - 1]
arguments = ["%s[(%s):]" % (".".join(part1), value)] + part2
elif member == "length":
value = arg[7:]
value = value[:len(value) - 1]
arguments = ["len(%s)" % (".".join(part1))] + part2
elif member == "charAt":
value = arg[7:]
value = value[:len(value) - 1]
arguments = ["%s[%s]" % (".".join(part1), value)] + part2



else:
arguments = ["qsa(%s).%s" % (".".join(part1), arg)] + part2
if ".".join(part1):
arguments = ["qsa(%s).%s" % (".".join(part1), arg)] + part2
else:
arguments = ["%s" % arg] + part2
yield "expr", ".".join(arguments)

class ArrayMember(ASTPython):
Expand Down
21 changes: 9 additions & 12 deletions pineboolib/qsaglobals.py
Expand Up @@ -8,14 +8,15 @@
from PyQt5 import QtCore, QtGui, QtWidgets



import traceback
import pineboolib
from pineboolib import flcontrols, decorators
from pineboolib.utils import filedir


import weakref
from pineboolib.utils import aqtt, auto_qt_translate_text
from PyQt5.Qt import QMainWindow, QDate
from PyQt5.Qt import QMainWindow, QDate, QTextStream

class File(object):

Expand All @@ -33,16 +34,6 @@ def getExistingDirectory(basedir):
return "%s/" % QtWidgets.QFileDialog.getExistingDirectory(basedir)


class Dir(object):

home = None

def __init__(self, ruta):
self.home = filedir("..")

def entryList(self, patron):
pass



def parseFloat(x):
Expand Down Expand Up @@ -150,6 +141,12 @@ def osName(self):

def setCaptionMainWidget(self, value):
pineboolib.project.mainWindow.setWindowTitle(value)

@decorators.NotImplementedWarn
def toUnicode(self, text, format):
return text




sys = SysType()
Expand Down
113 changes: 102 additions & 11 deletions pineboolib/qsatype.py
@@ -1,14 +1,17 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
import os
import os, fnmatch, re
import datetime, weakref
from lxml import etree
from io import StringIO

from PyQt5 import QtCore, QtGui, QtWidgets

# Cargar toda la API de Qt para que sea visible.
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtCore import QIODevice

from pineboolib import qsaglobals
from pineboolib import flcontrols
Expand All @@ -20,6 +23,8 @@
from pineboolib.fllegacy import FLUtil as FLUtil_Legacy
from pineboolib.fllegacy import FLReportViewer as FLReportViewer_Legacy

from pineboolib.utils import filedir

from pineboolib import decorators
import traceback
from PyQt5.Qt import QWidget
Expand Down Expand Up @@ -138,7 +143,7 @@ def FLTableDB(*args):
QColor = QtGui.QColor
QDateEdit = QtWidgets.QDateEdit

File = QtCore.QFile

@decorators.NotImplementedWarn
def FLPosPrinter(*args, **kwargs):
Expand All @@ -150,11 +155,41 @@ class flposprinter:
def FLReportViewer():
return FLReportViewer_Legacy.FLReportViewer()

@decorators.NotImplementedWarn
def FLDomDocument(*args, **kwargs):
class fldomdocument:
pass
return fldomdocument()

class FLDomDocument(object):

parser = None
tree = None
root_ = None
string_ = None

def __init__(self):
self.parser = etree.XMLParser(recover=True, encoding='utf-8')
self.string_ = None


def setContent(self, value):
try:
self.string_ = value
if value.startswith('<?'):
value = re.sub(r'^\<\?.*?\?\>','', value, flags=re.DOTALL)
self.tree = etree.fromstring(value, self.parser)
#self.root_ = self.tree.getroot()
return True
except:
return False

@decorators.NotImplementedWarn
def namedItem(self, name):
return True

def toString(self, value = None):
return self.string_






@decorators.NotImplementedWarn
def FLCodBar(*args, **kwargs):
Expand Down Expand Up @@ -206,6 +241,9 @@ def checkfn():

class FormDBWidget(QtWidgets.QWidget):

closed = QtCore.pyqtSignal()
cursor_ = None

def __init__(self, action, project, parent = None):
super(FormDBWidget, self).__init__(parent)
self._action = action
Expand All @@ -230,9 +268,11 @@ def closeEvent(self, event):
del self.iface

if can_exit:
self.closed.emit()
event.accept() # let the window close
else:
event.ignore()

def child(self, childName):
try:
ret = self.findChild(QtWidgets.QWidget, childName)
Expand Down Expand Up @@ -261,7 +301,6 @@ def cursor(self):
cursor = getattr(self.parentWidget(),"cursor_", None)

if cursor and not cursor is self.cursor_ :
#self.cursor_.__del__(True)
return cursor
except Exception:
# FIXME: A veces parentWidget existía pero fue eliminado. Da un error
Expand Down Expand Up @@ -289,6 +328,27 @@ def __init__(self):
def toString(self, *args, **kwargs):
texto = "%s-%s-%sT%s:%s:%s" % (self.date_.toString("yyyy"),self.date_.toString("MM"),self.date_.toString("dd"),self.time_.toString("hh"),self.time_.toString("mm"),self.time_.toString("ss"))
return texto

def getYear(self):
return self.date_.year()

def getMonth(self):
return self.date_.month()

def getDay(self):
return self.date_.day()

def getHours(self):
return self.time_.hour()

def getMinutes(self):
return self.time_.minute()

def getSeconds(self):
return self.time_.second()

def getMilliseconds(self):
return self.time_.msec()

@decorators.NotImplementedWarn
class Process(object):
Expand Down Expand Up @@ -351,9 +411,40 @@ def add(self, _object):
class CheckBox(QtWidgets.QCheckBox):
pass

class Dir(qsaglobals.Dir):
pass

class Dir(object):
path_ = None
home = None

def __init__(self, path):
self.path_ = path
self.home = filedir("..")

def entryList(self, patron):
p = os.walk(self.path_)
retorno = []
for file in os.listdir(self.path_):
if fnmatch.fnmatch(file, patron):
retorno.append(file)
return retorno

class File(QtCore.QFile):
fichero = None
mode = None

ReadOnly = QIODevice.ReadOnly
WriteOnly = QIODevice.WriteOnly
ReadWrite = QIODevice.ReadWrite

def __init__(self, rutaFichero):
self.fichero = rutaFichero
super(File, self).__init__(rutaFichero)

#def open(self, mode):
# super(File, self).open(self.fichero, mode)

def read(self):
in_ = QTextStream(self)
return in_.readAll()



0 comments on commit 17b661e

Please sign in to comment.