Create DB Firebird

This commit is contained in:
El Mau 2024-01-01 22:22:36 -06:00
parent 74a781044c
commit 12c6c5deaf
3 changed files with 8176 additions and 4 deletions

View File

@ -1,6 +1,61 @@
#!/usr/bin/env python3
from .easydoc import LODocument
from .easymain import BaseObject
class LOBaseSource(BaseObject):
_type = 'Base Source'
def __init__(self, obj):
super().__init__(obj)
def __str__(self):
return f'{self._type}:'
# ~ main_form = frm_container.component.getDrawPage.getforms.getbyindex(0)
class LOBaseForm(BaseObject):
_type = 'Base Form'
def __init__(self, obj):
super().__init__(obj)
def __str__(self):
return f'{self._type}: {self.name}'
@property
def name(self):
return self.obj.Name
def open(self):
self.obj.open()
return
def close(self):
return self.obj.close()
class LOBaseForms(BaseObject):
_type = 'Base Forms'
def __init__(self, obj):
super().__init__(obj)
def __str__(self):
return f'Base Forms'
def __len__(self):
"""Count forms"""
return self.obj.Count
def __contains__(self, item):
"""Contains"""
return item in self.obj
def __getitem__(self, index):
"""Index access"""
return LOBaseForm(self.obj[index])
class LOBase(LODocument):
@ -8,3 +63,10 @@ class LOBase(LODocument):
def __init__(self, obj):
super().__init__(obj)
def __str__(self):
return f'Base: {self.title}'
@property
def forms(self):
return LOBaseForms(self.obj.FormDocuments)

View File

@ -7,7 +7,7 @@ from .easywriter import LOWriter
from .easydraw import LODraw
from .easyimpress import LOImpress
from .easymath import LOMath
from .easybase import LOBase
from .easybase import LOBase, LOBaseSource
from .easyide import LOBasicIDE
@ -85,9 +85,6 @@ class LODocuments():
return self._classes[main](doc)
mm = create_instance('com.sun.star.frame.ModuleManager')
# ~ ??
# ~ print(mm.supportsService('com.sun.star.frame.ModuleManager'))
type_module = mm.identify(doc)
return self._classes[type_module](doc)
@ -98,6 +95,32 @@ class LODocuments():
obj = self._get_class_doc(active)
return obj
def is_registered(self, name):
dbc = create_instance('com.sun.star.sdb.DatabaseContext')
return dbc.hasRegisteredDatabase(name)
def _new_db(self, args: dict):
FIREBIRD = 'sdbc:embedded:firebird'
path = Paths(args.pop('Path'))
register = args.pop('Register', True)
name = args.pop('Name', '')
open_db = args.pop('Open', False)
if register and not name:
name = path.name
dbc = create_instance('com.sun.star.sdb.DatabaseContext')
db = dbc.createInstance()
db.URL = FIREBIRD
db.DatabaseDocument.storeAsURL(path.url, ())
if register:
dbc.registerDatabaseLocation(name, path.url)
if open_db:
return self.open(path.url, args)
return LOBaseSource(db)
def new(self, type_doc: str='calc', args: dict={}):
"""Create new document
@ -108,6 +131,9 @@ class LODocuments():
:return: New document
:rtype: Custom class
"""
if type_doc == 'base':
return self._new_db(args)
url = f'private:factory/s{type_doc}'
opt = dict_to_property(args)
doc = self._desktop.loadComponentFromURL(url, '_default', 0, opt)

File diff suppressed because it is too large Load Diff