Hi Julian, Maybe you remember my problem I have had a few days ago with the too long resource strings (for too complex dialog boxes). Now I received a proposal for the solution. Hereby I attach it, I hope you can use. It can improve Dialog Editor considerably. Regards Janos === Dr Janos Vegh, physicist Janos.Vegh@usa.net Inst. Nucl. Res. Hung. Acad. Sci. Janos.Vegh@ella.hu H-4001 Debrecen, POB 51, Hungary Tel: +36(52)417266 ext 1215 (H-4028 Debrecen, Bem ter 18/C) Fax: +36(52)413945 or 416181 _____________________________________________________________________ Sent by RocketMail. Get your free e-mail at http://www.rocketmail.com Return-Path: albert@dezi.wu-wien.ac.at Received: from jasmine.kan.at (slip-89.wu-wien.ac.at [137.208.99.89]) by mta5.rocketmail.com (8.8.5/8.6.12) with ESMTP id HAA18940 for ; Tue, 1 Apr 1997 07:56:59 -0800 (PST) Received: from jasmine.kan.at (albert@jasmine.kan.at [196.0.0.1]) by jasmine.kan.at (8.8.5/8.7.3) with SMTP id QAA03542 for ; Tue, 1 Apr 1997 16:51:46 +0200 Sender: albert@dezi.wu-wien.ac.at Message-ID: <33412100.1D7659F0@dezi.wu-wien.ac.at> Date: Tue, 01 Apr 1997 16:51:44 +0200 From: Albert Treytl X-Mailer: Mozilla 3.0Gold (X11; I; Linux 2.0.28 i486) MIME-Version: 1.0 To: Vegh Janos Subject: solution to Resourcestring References: <199703280852.JAA25975@jasmine.kan.at> Content-Type: multipart/mixed; boundary="------------13FDA6972D832449589EDC25" Content-Length: 16237 Hy, here is the necessary python script ! the file wxr2vcr will transform the wxr-File in this special 'x','x',.. form. This is only necessary, because the MSVC-Compiler cannot handle stringconstant longer than 2000 chars, but the compiler is able to handle the preinitialiazation of arrays of character the files Makefile, parsevcr, parseres, name_xpm, resource.cc and resource.h are very useful if you want to include more than one wxr-file. In other words wxr2vcr will transform your wxr-file - the other scripts will delete double entries, include bitmaps ,.... Resource.cc and resource.h should show you how to include the vcr- Files into your application !! here is my directory-structure: prgdir (resource.*, application) dos resource (wxr-files,makefile, phytonscripts) xpm (xpmfiles) bmp (bmpfiles) -- Albert Treytl email: e9126078@stud1.tuwien.ac.at treytl@ss1.iaee.tuwien.ac.at addr: Kierlingerstr.60 A-3400 Klosterneuburg Austria #!/usr/local/bin/python #Sript for changing wxrFiles to Motif style # # author Albert Treytl # created 04.10.1996 #Do not edit below this line import os import sys import posix import regsub import string ######################### main ################################### print 'Starte transformierung" ... \n' f = open(sys.argv[1], 'r') line = f.read() f.close() # zuerst einmal verkleinern print ' weg mit \\n + 2blanks ...' line = regsub.gsub('\n ','\n',line) print ' weg mit \\n + 4blanks ...' line = regsub.gsub('\n ','\n',line) print ' weg mit \\n + 6blanks ...' line = regsub.gsub('\n ','\n',line) print ' weg mit \\n + 8blanks ...' line = regsub.gsub('\n ','\n',line) print ' weg mit "\\n" ...' line = regsub.gsub('\n','',line) #print ' weg mit "\\" ...' #line = regsub.gsub('\','',line) print ' weg mit ", " ...' line = regsub.gsub(', ',',',line) print ' weg mit " = " ...' line = regsub.gsub(' = ','=',line) # jetzt in char arrays newline = "" s = -1 anz = string.count(line,'static char *'); for v in range(anz): s = string.find(line,'static',s+1) s = string.find(line,'*',s+1); s1 = string.find(line,'=',s+1); newline = newline + 'static char ' + line[s+1:s1] + '[] = {' s1 = string.find (line,'"',s) s2 = string.find (line,'"',s1+1) s1 = s1 +1 print line[s:s1] for u in range (s2-s1): z = line[u+s1:u+s1+1] if z != '\\': if z == '\'': newline = newline + '\'\\\'\',' else: newline = newline + '\''+ z +'\',' else: newline = newline + '\n' newline = newline + '\'\\0\'};\n\n' #jetzt auf platte schreiben f = open(sys.argv[2], 'w') f.write(newline) f.close() #!/usr/local/bin/python #Sript for including the bitmap file and pointer references in #DialogED-WXR-Files # ############################################################################# import os import sys import posix import regsub import string ######################### main ################################### file = sys.argv[1] print 'converting bmp-entries in vcr ...' f = open(file, 'r') line = f.read() f.close() anz = string.count(line,'"bitmap') s = 0 for u in range(anz): s = string.find(line,'"bitmap',s) e = string.find(line,').',s+1) s1 = string.find(line,'.',s+1) if s1>e : print 'Syntax Error in '+file print line[s1-20:s1+20] print line[s-20:s]+'#'+line[s:s+20] print e else : h = line[s:s1] s2 = string.rfind(h,'/',0) name_ohne_ext = h[s2+1:len(h)] print file+':'+name_ohne_ext s3 = string.find(h,'\'',0) s4 = string.find(h,'\'',s3+1) name_bitmap = h[s3+1:s4] l = len(line) line = line[0:s+1]+'bitmap(name = \''+name_bitmap+'\',\\\n'\ ' bitmap = [\''+name_ohne_ext+'_xpm\''\ +',\'wxBITMAP_TYPE_XPM_DATA\',\'WINDOWS\'],\\\n'\ +' bitmap =[\''+name_ohne_ext+'_xpm\''\ +',\'wxBITMAP_TYPE_XPM_DATA\',\'X\']'\ +line[e:l] line = regsub.gsub(name_bitmap,'bm_'+name_ohne_ext,line) s = e f = open(sys.argv[1], 'w') f.write (line) f.close() print 'File successfully converted!' #!/usr/local/bin/python #Sript for including the bitmap file and pointer references in #DialogED-WXR-Files # ############################################################################# import os import sys import posix import regsub import string ######################### main ################################### file = sys.argv[1] print 'deleting double entries ...' f = open(file, 'r') line = f.read() f.close() s = 0 while s != -1: s = string.find(line,'static',s) if s != -1: e = string.find(line,'=',s+1) name = line[s:e] r = string.find(line,name,e+1) if r != -1: r = string.find(line,';',e+1) l = len(line); line = line[0:s]+line[r:l] s = s +1 f = open(file, 'w') f.write (line) f.close() print 'File successfully converted!' #!/usr/local/bin/python #Sript for changing giving the xpmfiles a correct name # # author Albert Treytl 01.10.1996 # input filename als parameter import regsub import sys import string file = sys.argv[1] s = string.rfind(file,'.'); s1 = string.rfind(file,'/'); if s > s1: name = file[s1+1:s] file = file[0:s] print 'convertiere '+file+'.xpm ...' #lesen f = open(file+'.xpm', 'r') line = f.read() f.close() #aendern line = regsub.gsub('noname',name+'_xpm',line) #jetzt auf platte schreiben f = open(file+'.xpm', 'w') f.write(line) f.close() print 'beendet.' # Makefile to transform resources to the two environments # MSW and Motif # # author: Albert Treytl # created: 04.10.1996 # updated: 24.02.1997 resdir = ./ bmpdir = ${resdir}bitmaps/ xpmdir = ${resdir}xpm/ dosdir = ../ unixdir = ../../ XPMRES = xpm_res.dat BMP = abhebung.bmp bspicon.bmp ibsp.bmp scheck.bmp address.bmp\ konto.bmp stop.bmp albert.bmp clearing.bmp kunde.bmp telefon.bmp\ austria.bmp dberror1.bmp mole.bmp ueberw.bmp bank.bmp dberror2.bmp\ user.bmp bsp.bmp dberror3.bmp question.bmp bsp1.bmp\ einzah.bmp robber.bmp bsp2.bmp email.bmp info.bmp XPM = $(patsubst %.bmp,%.xpm,$(BMP)) WXRRES = wxr_res.dat WXR = bank.wxr konto.wxr misc.wxr waehrung.wxr\ bsp.wxr kunde.wxr person.wxr zahdyna.wxr\ listen.wxr user.wxr zahstat.wxr install.wxr menu.wxr verw.wxr zinsen.wxr VCR = $(patsubst %.wxr,%.vcr,$(WXR)) ###################################### vpath %.bmp ${bmpdir} vpath %.xpm ${xpmdir} vpath %.wxr ${resdir} vpath %.vcr ${resdir} ###################################### all:: ${WXRRES} ${XPMRES} todos:: ${WXRRES} ${XPMRES} dos2unix -k -q -n ${WXRRES} ${dosdir}${WXRRES} dos2unix -k -q -n ${XPMRES} ${dosdir}${XPMRES} tounix:: ${WXRRES} ${XPMRES} cp ${WXRRES} ${unixdir} cp ${XPMRES} ${unixdir} cp ${xpmdir}bspicon.xpm ${unixdir} ${XPMRES}:: $(XPM) cat $(addprefix ${xpmdir},${XPM}) > ${XPMRES} ${WXRRES}:: $(VCR) cat ${VCR} > ${WXRRES} parseres ${WXRRES} clean:: rm -f ${XPMRES} ${WXRRES} ${VCR} $(addprefix ${xpmdir}, ${XPM}) distclean: clean # create an xpm from a bmp and give it the correct name $(XPM) : %.xpm : %.bmp bmptoppm $< | ppmtoxpm - > ${xpmdir}$@ name_xpm ${xpmdir}$@ $(VCR) : %.vcr : %.wxr dos2unix -k -q -n $< $@ parsevcr $@ $@ wxr2vcr $@ $@ tar:: tar -czvf resource.tgz Makefile ${WXR} $(addprefix ${bmpdir},${BMP}) testparam:: echo ${resdir} echo ${BMP} echo ${XMP} echo ${WXR} echo ${VCR} /* * File: resource.cc * Purpose: implementation of resource-file-parsing for bsp * Author: Albert Treytl * Created: 3.10.1996 * Updated: * Copyright: (c) 1996, Hermann Himmelbauer und Albert Treytl */ // for the silly MSW-Compiler #include "wx_prec.h" #include "wx.h" #include "resource.h" #ifdef INCLUDE_WXR #include "wxr_res.dat" #include "xpm_res.dat" #endif #ifndef INCLUDE_WXR Resultat ParseResources() { wxResourceParseFile("menu.wxr"); wxResourceParseFile("zahdyna.wxr"); wxResourceParseFile("zahstat.wxr"); wxResourceParseFile("konto.wxr"); wxResourceParseFile("kunde.wxr"); wxResourceParseFile("bank.wxr"); wxResourceParseFile("zinsen.wxr"); wxResourceParseFile("listen.wxr"); wxResourceParseFile("user.wxr"); wxResourceParseFile("misc.wxr"); wxResourceParseFile("person.wxr"); wxResourceParseFile("waehrung.wxr"); wxResourceParseFile("verw.wxr"); return(TRUE); } #else Resultat ParseResources() { // make bitmap data known to system wxResourceRegisterBitmapData("abhebung_xpm",abhebung_xpm); wxResourceRegisterBitmapData("bspicon_xpm",bspicon_xpm); wxResourceRegisterBitmapData("ibsp_xpm",ibsp_xpm); wxResourceRegisterBitmapData("scheck_xpm",scheck_xpm); wxResourceRegisterBitmapData("address_xpm",address_xpm); wxResourceRegisterBitmapData("konto_xpm",konto_xpm); wxResourceRegisterBitmapData("stop_xpm",stop_xpm); wxResourceRegisterBitmapData("albert_xpm",albert_xpm); wxResourceRegisterBitmapData("clearing_xpm",clearing_xpm); wxResourceRegisterBitmapData("kunde_xpm",kunde_xpm); wxResourceRegisterBitmapData("austria_xpm",austria_xpm); wxResourceRegisterBitmapData("dberror1_xpm",dberror1_xpm); wxResourceRegisterBitmapData("mole_xpm",mole_xpm); wxResourceRegisterBitmapData("ueberw_xpm",ueberw_xpm); wxResourceRegisterBitmapData("telefon_xpm",telefon_xpm); wxResourceRegisterBitmapData("bank_xpm",bank_xpm); wxResourceRegisterBitmapData("dberror2_xpm",dberror2_xpm); wxResourceRegisterBitmapData("bsp_xpm",bsp_xpm); wxResourceRegisterBitmapData("dberror3_xpm",dberror3_xpm); wxResourceRegisterBitmapData("bsp1_xpm",bsp1_xpm); wxResourceRegisterBitmapData("robber_xpm",robber_xpm); wxResourceRegisterBitmapData("bsp2_xpm",bsp2_xpm); wxResourceRegisterBitmapData("question_xpm",question_xpm); wxResourceRegisterBitmapData("einzah_xpm",einzah_xpm); wxResourceRegisterBitmapData("email_xpm",email_xpm); wxResourceRegisterBitmapData("user_xpm",user_xpm); wxResourceRegisterBitmapData("info_xpm",info_xpm); // Der Menuebar wxResourceParseData(menuBar3); // Bankverwaltung "bank.wxr" wxResourceParseData(bank_buttons); wxResourceParseData(bank4); wxResourceParseData(bank4a); wxResourceParseData(bm_bank); wxResourceParseData(bank_anz); // Waehrungen waehrung.wxr wxResourceParseData(bm_question); wxResourceParseData(waeh1); wxResourceParseData(waeh1a); wxResourceParseData(waeh1b); //kontoverwaltung "konto.wxr" wxResourceParseData(konto_anz); wxResourceParseData(konto_buttons); wxResourceParseData(kto1); wxResourceParseData(kto2); wxResourceParseData(kto3); wxResourceParseData(kto5); wxResourceParseData(kto6); wxResourceParseData(kto6a); wxResourceParseData(kto6b); wxResourceParseData(kto7); wxResourceParseData(kto7a); wxResourceParseData(kto14); wxResourceParseData(bm_question); wxResourceParseData(bm_konto); // kundenverwaltung "kunde.wxr" wxResourceParseData(ku5); wxResourceParseData(ku5a); wxResourceParseData(ku5b); wxResourceParseData(ku5c); wxResourceParseData(kunde_buttons); wxResourceParseData(kunde_anz); wxResourceParseData(ku7); wxResourceParseData(ku7a); wxResourceParseData(ku7b); wxResourceParseData(bm_kunde); wxResourceParseData(bm_question); // nur fuer das BSP "bsp.wxr" wxResourceParseData(bm_robber); wxResourceParseData(bm_austria); wxResourceParseData(bm_bsp1); wxResourceParseData(bm_question); wxResourceParseData(bm_bsp2); wxResourceParseData(info1); wxResourceParseData(info2); wxResourceParseData(bm_ibsp); wxResourceParseData(beenden); wxResourceParseData(startup); // Zahlungsverkehr 1 "zahdyna.wxr" wxResourceParseData(bm_abhebung); wxResourceParseData(bm_clearing); wxResourceParseData(bm_question); wxResourceParseData(bm_scheck); wxResourceParseData(bm_einzah); wxResourceParseData(bm_ueberw); wxResourceParseData(clr1a); wxResourceParseData(clr1b); wxResourceParseData(clr1c); wxResourceParseData(clr1d); wxResourceParseData(zah1a); wxResourceParseData(zah1b); wxResourceParseData(zah1c); wxResourceParseData(zah1d); wxResourceParseData(zah3a); wxResourceParseData(zah3b); wxResourceParseData(zah3c); wxResourceParseData(zah3d); wxResourceParseData(zah6a); wxResourceParseData(zah6b); wxResourceParseData(zah6c); wxResourceParseData(zah7a); wxResourceParseData(zah7b); wxResourceParseData(zah7c); wxResourceParseData(zah1x); wxResourceParseData(zah1y); wxResourceParseData(zah1z); // Zahlungsverkehr2 "zahstat.wxr" wxResourceParseData(clr2); wxResourceParseData(clr4); wxResourceParseData(zah9); wxResourceParseData(zah10); wxResourceParseData(clr2a); wxResourceParseData(kto9a); wxResourceParseData(zah10a); wxResourceParseData(bm_stop); wxResourceParseData(bm_question); // zinsenverwaltung "zinsen.wxr" wxResourceParseData(zins2); wxResourceParseData(zins2a); wxResourceParseData(bm_question); // Listen "listen.wxr" wxResourceParseData(liste1); wxResourceParseData(liste2); wxResourceParseData(liste3); wxResourceParseData(liste4); // Alles Moegliche "misc.wxr" wxResourceParseData(bm_dberror2); wxResourceParseData(bm_info); wxResourceParseData(bm_stop); wxResourceParseData(ierror); wxResourceParseData(info); wxResourceParseData(dabaerror); //Benutzeroberflaeche Person ("person.wxr") wxResourceParseData(bm_address); wxResourceParseData(bm_telefon); wxResourceParseData(bm_question); wxResourceParseData(bm_email); wxResourceParseData(pers1); wxResourceParseData(pers3); wxResourceParseData(pers5); wxResourceParseData(pers6); wxResourceParseData(pers10); wxResourceParseData(pers13); wxResourceParseData(pers16); wxResourceParseData(pers3a); // Userverwaltung ("user.wxr") wxResourceParseData(user_buttons); wxResourceParseData(user8); wxResourceParseData(user_anz); wxResourceParseData(bm_user); // Verwaltung ("verw.wxr") wxResourceParseData(bm_question); wxResourceParseData(bm_stop); wxResourceParseData(vr1); wxResourceParseData(vr2); wxResourceParseData(vr3); wxResourceParseData(vr4); wxResourceParseData(vr5); wxResourceParseData(vr6); wxResourceParseData(vr7); wxResourceParseData(vr8); wxResourceParseData(vr9); wxResourceParseData(vr10); return(TRUE); } #endif /* INCLUDE_WXR */ /* * File: resource.h * Purpose: declarations for resource.cc for bsp * Author: Albert Treytl * Created: 3.10.1996 * Updated: * Copyright: (c) 1996, Hermann Himmelbauer und Albert Treytl */ /* * the definition an check of the _INC_..._H preprocessor variables should * avoid double definition since header-files might be included twice. */ #ifndef _INC_RESOURCE_H #define _INC_RESOURCE_H #include "testfunk.h" //#undef INCLUDE_WXR // wxr-files will be parsed #define INCLUDE_WXR // wxr-files will be includes extern Resultat ParseResources(); #endif /* mutual exclusion */