def __convert_odt_to_pdf(filename=None, verbose=False): cmd_line = [ 'lowriter', '--convert-to', 'pdf', '--outdir', os.path.split(filename)[0], filename ] success, returncode, stdout = gmShellAPI.run_process(cmd_line=cmd_line, verbose=True) if not success: return None return gmTools.fname_stem_with_path(filename) + '.pdf'
def _on_save_button_pressed(self, event): if self.__tl_file is None: return dlg = wx.FileDialog ( parent = self, message = _("Save timeline as images (SVG, PNG) under..."), defaultDir = os.path.expanduser(os.path.join('~', 'gnumed')), defaultFile = 'timeline.svg', wildcard = '%s (*.svg)|*.svg' % _('SVG files'), style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT ) choice = dlg.ShowModal() fname = dlg.GetPath() dlg.DestroyLater() if choice != wx.ID_OK: return False self._PNL_timeline.export_as_svg(filename = fname) self._PNL_timeline.export_as_png(filename = gmTools.fname_stem_with_path(fname) + '.png')
def _on_save_button_pressed(self, event): if self.__tl_file is None: return dlg = wx.FileDialog( parent=self, message=_("Save timeline as images (SVG, PNG) under..."), defaultDir=os.path.expanduser(os.path.join('~', 'gnumed')), defaultFile='timeline.svg', wildcard='%s (*.svg)|*.svg' % _('SVG files'), style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) choice = dlg.ShowModal() fname = dlg.GetPath() dlg.DestroyLater() if choice != wx.ID_OK: return False self._PNL_timeline.export_as_svg(filename=fname) self._PNL_timeline.export_as_png( filename=gmTools.fname_stem_with_path(fname) + '.png')
def print_generic_document(parent=None, jobtype:str=None, episode=None): """Call LibreOffice Writer with a generated (fake) ODT file. Once Writer is closed, the ODT is imported if different from its initial content. Note: The file passed to LO _must_ reside in a directory the parents of which are all R-X by the user or else LO will throw up its arms in despair and fall back to the user's home dir upon saving. So, /tmp/user/$UID/some-file.odt will *not* work (because .../user/... is "drwx--x--x root.root") while /home/$USER/some/dir/some-file.odt does. """ sandbox = os.path.join(gmTools.gmPaths().user_tmp_dir, 'libreoffice') gmTools.mkdir(sandbox) fpath = gmTools.get_unique_filename(suffix = '.txt', tmp_dir = sandbox) doc_file = open(fpath, mode = 'wt') doc_file.write(__ODT_FILE_PREAMBLE) doc_file.write(_('Today: %s') % gmDateTime.pydt_now_here().strftime('%c')) doc_file.write('\n\n') prax = gmPraxis.gmCurrentPraxisBranch() doc_file.write('Praxis:\n') doc_file.write(prax.format()) doc_file.write('\n') doc_file.write('Praxis branch:\n') doc_file.write('\n'.join(prax.org_unit.format ( with_address = True, with_org = True, with_comms = True ))) doc_file.write('\n\n') pat = gmPerson.gmCurrentPatient(gmPerson.cPatient(12)) if pat.connected: doc_file.write('Patient:\n') doc_file.write(pat.get_description_gender()) doc_file.write('\n\n') for adr in pat.get_addresses(): doc_file.write(adr.format(single_line = False, verbose = True, show_type = True)) doc_file.write('\n\n') for chan in pat.get_comm_channels(): doc_file.werite(chan.format()) doc_file.write('\n\n') doc_file.write('Provider:\n') doc_file.write('\n'.join(gmStaff.gmCurrentProvider().get_staff().format())) doc_file.write('\n\n-----------------------------------------------------------------------------\n\n') doc_file.close() # convert txt -> odt success, ret_code, stdout = gmShellAPI.run_process ( cmd_line = [ 'lowriter', '--convert-to', 'odt', '--outdir', os.path.split(fpath)[0], fpath ], verbose = True ) if success: fpath = gmTools.fname_stem_with_path(fpath) + '.odt' else: _log.warning('cannot convert .txt to .odt') md5_before = gmTools.file2md5(fpath) gmShellAPI.run_process(cmd_line = ['lowriter', fpath], verbose = True) md5_after = gmTools.file2md5(fpath) if md5_before == md5_after: gmDispatcher.send(signal = 'statustext', msg = _('Document not modified. Discarding.'), beep = False) return if not pat.connected: shutil.move(fpath, gmTools.gmPaths().user_work_dir) gmDispatcher.send(signal = 'statustext', msg = _('No patient. Moved file into %s') % gmTools.gmPaths().user_work_dir, beep = False) return pat.export_area.add_file ( filename = fpath, hint = _('Generic letter, written at %s') % gmDateTime.pydt_now_here().strftime('%Y %b %d %H:%M') ) gmDispatcher.send(signal = 'display_widget', name = 'gmExportAreaPlugin')