%% options copyright owner = Dirk Krause copyright year = 2011-2013 license = bsd %% wx-gui type = frame menu bar = mbMain contents = mainSizer tool bar = tbMain icon = dkicon_bitmap status bar = 1 sTexts[3] [wxToolBar tbMain] contents = bDir contents = bOptions contents = bRun contents = bExit [wxToolBarToolBase bDir] text = sTexts[4] bitmap = xpm_choose_dir id = DkWxBmeps_ChooseDirectory tip = sTexts[5] [wxToolBarToolBase bOptions] text = sTexts[6] bitmap = xpm_set_options id = DkWxBmeps_SetOptions tip = sTexts[7] [wxToolBarToolBase bRun] text = sTexts[8] bitmap = xpm_run_conversion id = DkWxBmeps_Run tip = sTexts[9] [wxToolBarToolBase bExit] text = sTexts[10] bitmap = xpm_exit_program id = DkWxBmeps_Quit tip = sTexts[11] [wxMenuBar mbMain] contents = menuFile contents = menuHelp [wxMenu menuFile] contents = miFileDir contents = miFileOptions contents = miFileRun contents = miFileExit text = sTexts[12] [wxMenu menuHelp] contents = miHelpContents contents = miHelpAbout text = sTexts[13] [wxMenuItem miFileDir] id = DkWxBmeps_ChooseDirectory text = sTexts[14] tip = sTexts[15] [wxMenu miFileOptions] text = sTexts[16] tip = sTexts[17] contents = miFileOptionsSetup contents = miFileOptionsReset [wxMenuItem miFileOptionsSetup] id = DkWxBmeps_SetOptions text = sTexts[99] tip = sTexts[100] [wxMenuItem miFileOptionsReset] id = DkWxBmeps_ResetOptions text = sTexts[101] tip = sTexts[102] [wxMenuItem miFileRun] id = DkWxBmeps_Run text = sTexts[18] tip = sTexts[19] [wxMenuItem miFileExit] id = DkWxBmeps_Quit text = sTexts[20] tip = sTexts[21] [wxMenuItem miHelpContents] id = DkWxBmeps_Help_Contents text = sTexts[22] tip = sTexts[23] [wxMenuItem miHelpAbout] id = DkWxBmeps_About text = sTexts[24] tip = sTexts[25] [wxBoxSizer mainSizer] direction = horizontal contents = $space(10) contents = verticalSizer contents = $space(10) [wxBoxSizer verticalSizer] direction = vertical grow = yes proportion = 1 contents = $space(10) contents = contentsSizer left contents = $space(10) contents = tLogmessages left top contents = $space(10) contents = tStatus left contents = $space(10) [wxGridBagSizer contentsSizer] grid = 5 5 contents = lDirectory 0 0 1 1 right contents = tDirectory . 1 1 1 [wxStaticText lDirectory] text = sTexts[26] [wxStaticText tDirectory] text = ((sDirectory) ? sDirectory : sTexts[27]) [wxTextCtrl tLogmessages] grow = yes proportion = 1 size = 400 60 text style = readonly multiline left no-wrap selection text = sTexts[28] [wxStaticText tStatus] text = sTexts[28] %% header start %% class start /** Top-level frame for the wxbmeps application. */ class DkWxBmepsFrame : public DkWxFrame { private: /** Event table. */ DECLARE_EVENT_TABLE() void findPaperSizes(); protected: /** Conversion options. */ dk3_bm_eps_options_t bmeo; /** Timestamp to close the application. */ dk3_time_t timeClose; /** Localized texts. */ wxChar const * const *sTexts; /** Localized dkChar texts. */ dkChar const * const *msg; /** Directory or file nameto process. */ wxChar const *sDirectory; /** Communication object for main thread and worker thread. */ DkWxCommunicator *pComm; /** Color: Black. */ wxColour *cBlack; /** Color: Green. */ wxColour *cGreen; /** Color: Red. */ wxColour *cRed; /** Paper sizes list. */ wxArrayString *asPaperSizes; /** Paper sizes array. */ dk3_paper_size_t *paperSizes; /** Number of paper sizes in the array. */ size_t nPaperSizes; /** Index of current paper size in asPaperSizes and paperSizes. */ size_t currentPaperSize; /** Directory dialog x position. */ int ddx; /** Directory dialog y position. */ int ddy; /** Options dialog x position. */ int odx; /** Options dialog y position. */ int ody; /** Flag: Save settings when the program exits. */ bool bSaveSettings; /** Flag: Command line options require automatic start. */ bool bAutostartWanted; /** Flag: Automatic start initialized. */ bool bAutostartDone; /** Flag: GUI active. */ bool bGuiActive; /** Flag: Close operation scheduled. */ bool bCloseScheduled; /** Flag: Setup was checked. */ bool bSetupChecked; %% class end public: /** Constructor. @param applicationName Application name. @param messageTexts Localized texts. @param ms Localized texts as dkChar strings. @param applicationHelper Application helper. @param wxid Window ID. @param hc Help controller. @param argc Number of command line arguments. @param argv Command line arguments array. */ DkWxBmepsFrame( wxChar const *applicationName, wxChar const * const *messageTexts, dkChar const * const *ms, DkWxAppHelper *applicationHelper, int wxid, DkWxHelpController *hc, int argc, wxChar **argv ); /** Destructor. */ ~DkWxBmepsFrame(); /** Check whether we can close the window. @param isLast Flag: Last top level window. */ bool canClose(bool isLast); /** Retrieve data from wxConfig. */ void retrieveData(); /** Save data to wxConfig. */ void saveData(); /** Menu event handler for File / Quit. @param event Event to process. */ void OnQuit(wxCommandEvent& event); /** Menu event handler for File / Directory. */ void OnChooseDirectory(wxCommandEvent& event); /** Menu event handler for File / Options / Set. */ void OnSetOptions(wxCommandEvent& event); /** Menu event handler for File / Options / Reset. */ void OnResetOptions(wxCommandEvent& event); /** Menu event handler to run a conversion. */ void OnRunConversion(wxCommandEvent& event); /** Menu event handler to show helpt contents. */ void OnHelpContents(wxCommandEvent& event); /** Menu event handler to show version number. */ void OnAbout(wxCommandEvent& event); /** Idle event handler */ void OnIdle(wxIdleEvent & event); /** Run a conversion. */ void runConversion(void); /** Check whether GUI is active. @return Flag, GUI is active. */ bool isGuiActive(); /** Check setup. @return Flag to indicate setup ok or not. */ bool checkSetup(); }; %% header end %% module start #include "wxbmeps.h" /* Icons and bitmaps */ #include "dkicon.xpm" #include "choose-dir.xpm" #include "exit-program.xpm" #include "run-conversion.xpm" #include "set-options.xpm" $!trace-include /** Start of version information. */ static wxChar const wxbmpp_version[] = { wxT("wxbmpp (part of dkt-") }; /** Version number for version information. */ static wxChar const wxbmpp_versnumber[] = { DKT_WXCHAR_VERSION }; /** End of version information. */ static wxChar const wxbmpp_versend[] = { wxT(")") }; /** Setting names for string settings. */ wxChar const * const dkwxbmeps_string_setting_names[] = { $!string-table macro=wxT # # 0: Current directory # wxbmeps.directory # # # wxbmeps.paper-size $!end }; /** Setting names for double settings. */ wxChar const * const dkwxbmeps_double_setting_names[] = { $!string-table macro=wxT wxbmeps.area.w wxbmeps.area.h wxbmeps.area.border.left wxbmeps.area.border.right wxbmeps.area.border.top wxbmeps.area.border.bottom wxbmeps.resolution $!end }; /** Setting names for int settings. */ wxChar const * const dkwxbmeps_int_setting_names[] = { $!string-table macro=wxT wxbmeps.driver wxbmeps.mode wxbmeps.size-mode wxbmeps.color wxbmeps.predictor wxbmeps.image-origin-point wxbmeps.draft wxbmeps.duplex wxbmeps.tumble wxbmeps.ps-level wxbmeps.dsc wxbmeps.dct wxbmeps.keep-aspect-ratio wxbmeps.bg.red wxbmeps.bg.green wxbmeps.bg.blue wxbmeps.bg.force wxbmeps.interpolation wxbmeps.interpolation-for-jpeg wxbmeps.make wxbmeps.reduce-bits-per-component $!end }; static const wxCmdLineEntryDesc wxbmepsframe_cmd_line_desc[] = { { wxCMD_LINE_OPTION, wxT_2("l"), wxT_2("language"), wxT_2("Choose output language"), wxCMD_LINE_VAL_STRING }, { wxCMD_LINE_SWITCH, wxT_2("m"), wxT_2("make"), wxT_2("Run in make mode") }, { wxCMD_LINE_SWITCH, wxT_2("r"), wxT_2("run"), wxT_2("Run immediately") }, { wxCMD_LINE_PARAM, NULL, NULL, wxT_2("input file"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, { wxCMD_LINE_NONE } }; /** Event table for the DkWxBmepsFrame class. */ BEGIN_EVENT_TABLE(DkWxBmepsFrame, wxFrame) EVT_MENU(DkWxBmeps_Quit, DkWxBmepsFrame::OnQuit) EVT_MENU(DkWxBmeps_Help_Contents, DkWxBmepsFrame::OnHelpContents) EVT_MENU(DkWxBmeps_About, DkWxBmepsFrame::OnAbout) EVT_MENU(DkWxBmeps_ChooseDirectory, DkWxBmepsFrame::OnChooseDirectory) EVT_MENU(DkWxBmeps_SetOptions, DkWxBmepsFrame::OnSetOptions) EVT_MENU(DkWxBmeps_ResetOptions, DkWxBmepsFrame::OnResetOptions) EVT_MENU(DkWxBmeps_Run, DkWxBmepsFrame::OnRunConversion) EVT_IDLE(DkWxBmepsFrame::OnIdle) END_EVENT_TABLE() %% constructor start DkWxBmepsFrame::DkWxBmepsFrame( wxChar const *applicationName, wxChar const * const *messageTexts, dkChar const * const *m, DkWxAppHelper *applicationHelper, int wxid, DkWxHelpController *hc, int argc, wxChar **argv ) : DkWxFrame(applicationName, applicationHelper, hc, wxid) { #if defined(__WXMSW__) wxIcon dkicon_bitmap(wxT("aaaaa")); /* from resource file */ #else wxIcon dkicon_bitmap(xpm_dkicon); /* from included xpm */ #endif $? "+ DkWxBmepsFrame::DkWxBmepsFrame %d", argc ddx = -1; ddy = -1; odx = -1; ody = -1; pComm = NULL; timeClose = (dk3_time_t)0UL; bSetupChecked = false; sTexts = messageTexts; msg = m; bSaveSettings = true; bGuiActive = true; bCloseScheduled = false; bAutostartWanted = false; bAutostartDone = false; sDirectory = NULL; cBlack = NULL; cGreen = NULL; cRed = NULL; dk3bmeo_init(&bmeo); bmeo.app = applicationHelper->getApp(); dk3bmeo_apply_preferences(&bmeo); asPaperSizes = new wxArrayString(); paperSizes = NULL; nPaperSizes = 0; currentPaperSize = 0; findPaperSizes(); retrieveData(); %% constructor end pComm = new DkWxCommunicator( applicationHelper->getWxEncoding(), applicationHelper->getDkEncoding() ); cBlack = new wxColour(0x00, 0x00, 0x00); cGreen = new wxColour(0x00, 0x7F, 0x00); cRed = new wxColour(0x7F, 0x00, 0x00); if(argc > 1) { /* Any option or argument, no persistent settings. */ bSaveSettings = false; dk3bmeo_init(&bmeo); #if VERSION_BEFORE_20131020 bAutostartWanted = true; if(pComm) { $? ". enable autostart" pComm->autostartEnable(true); } #endif /* ##### Process command line arguments. */ { int res = -1; wxCmdLineParser parser(wxbmepsframe_cmd_line_desc, argc, argv); { wxLogNull log; res = parser.Parse(false); } if(res == 0) { wxString sLanguage(wxT("")); dkChar bu[1024]; wxChar const *ptr; if(parser.Found(wxT("r"))) { bAutostartWanted = true; if(pComm) { $? ". enable autostart" pComm->autostartEnable(true); } } if(parser.Found(wxT("m"))) { bmeo.make = 1; } if(parser.Found(wxT("l"), &sLanguage)) { ptr = sLanguage.c_str(); if(ptr) { if(applicationHelper->wxToDk(bu, DK3_SIZEOF(bu,dkChar), ptr)) { (void)dk3bmeo_set_language( &bmeo, bu, applicationHelper->getApp() ); } } } if(parser.GetParamCount() > 0) { $? ". parameters available" wxString cmdfn; wxChar const *newfn; cmdfn = parser.GetParam(0); wxFileName fn(cmdfn); fn.Normalize( wxPATH_NORM_LONG | wxPATH_NORM_DOTS | wxPATH_NORM_TILDE | wxPATH_NORM_ABSOLUTE ); if(fn.FileExists()) { bAutostartWanted = true; if(pComm) { $? ". enable autostart" pComm->autostartEnable(true); } } cmdfn = fn.GetFullPath(); newfn = cmdfn.c_str(); if(newfn) { $? ". newfn (1)" newfn = dk3wxs_dup_app(newfn, applicationHelper->getApp()); if(newfn) { $? ". newfn (2)" dk3_release(sDirectory); sDirectory = newfn; } else { $? "! newfn (2)" } } else { $? "! newfn (1)" } } else { $? ". no parameters" } } } /* (void)dk3bmeo_check(&bmeo, 0, applicationHelper->getApp(), NULL); */ } $? ". sDirectory = \"%ls\"", sDirectory $? ". make = %d", bmeo.make $? ". driver = %d", bmeo.dr $? ". mode = %d", bmeo.mode $? ". ps level = %d", bmeo.psl $? ". dsc = %d", bmeo.dsc $? ". draft = %d", bmeo.draft $? ". szmode = %d", bmeo.szmode $? ". resolution = %lg", bmeo.resolution $? ". area = %lg %lg", bmeo.ima.ps.w, bmeo.ima.ps.h $? ". keep aspect = %d", bmeo.kar $? ". duplex = %d", bmeo.duplex $? ". tumble = %d", bmeo.tumble $? ". origin = %d", bmeo.io $? ". dct = %d", bmeo.dct $? ". predicotr = %d", bmeo.pred $? ". background = %d %d %d %d", bmeo.bgr, bmeo.bgg, bmeo.bgb, bmeo.fbg $? ". interpolate = %d %d", bmeo.ip, bmeo.jip restorePosition(); $? "- DkWxBmepsFrame::DkWxBmepsFrame" } %% module end DkWxBmepsFrame::~DkWxBmepsFrame() { $? "+ DkWxBmepsFrame::~DkWxBmepsFrame" dk3_release(paperSizes); dk3_release(sDirectory); dk3_cpp_release(pComm); dk3_cpp_release(cBlack); dk3_cpp_release(cGreen); dk3_cpp_release(cRed); dk3_cpp_release(asPaperSizes); $? "- DkWxBmepsFrame::~DkWxBmepsFrame" } void DkWxBmepsFrame::saveData() { double d[7]; int i[21]; $? "+ DkWxBmepsFrame::saveData" d[0] = bmeo.ima.ps.w; d[1] = bmeo.ima.ps.h; d[2] = bmeo.ima.ps.i; d[3] = bmeo.ima.ps.o; d[4] = bmeo.ima.ps.t; d[5] = bmeo.ima.ps.b; d[6] = bmeo.resolution; i[0] = bmeo.dr; i[1] = bmeo.mode; i[2] = bmeo.szmode; /* i[3] = bmeo.color; */ i[3] = 0; i[4] = bmeo.pred; i[5] = bmeo.io; i[6] = bmeo.draft; i[7] = bmeo.duplex; i[8] = bmeo.tumble; i[9] = bmeo.psl; i[10] = bmeo.dsc; i[11] = bmeo.dct; i[12] = bmeo.kar; i[13] = bmeo.bgr; i[14] = bmeo.bgg; i[15] = bmeo.bgb; i[16] = bmeo.fbg; i[17] = bmeo.ip; i[18] = bmeo.jip; i[19] = bmeo.make; i[20] = bmeo.rbpc; pHelper->saveMultipleDoubles(dkwxbmeps_double_setting_names, d); pHelper->saveMultipleInts(dkwxbmeps_int_setting_names, i); if(sDirectory) { pHelper->saveString(dkwxbmeps_string_setting_names[0], sDirectory); } pHelper->saveString( dkwxbmeps_string_setting_names[1], asPaperSizes->Item(currentPaperSize) ); /* ##### */ $? "- DkWxBmepsFrame::saveData" } void DkWxBmepsFrame::retrieveData() { double d[7]; int i[21]; $? "+ DkWxBmepsFrame::retrieveData" d[0] = bmeo.ima.ps.w; d[1] = bmeo.ima.ps.h; d[2] = bmeo.ima.ps.i; d[3] = bmeo.ima.ps.o; d[4] = bmeo.ima.ps.t; d[5] = bmeo.ima.ps.b; d[6] = bmeo.resolution; i[0] = bmeo.dr; i[1] = bmeo.mode; i[2] = bmeo.szmode; /* i[3] = bmeo.color; */ i[3] = 0; i[4] = bmeo.pred; i[5] = bmeo.io; i[6] = bmeo.draft; i[7] = bmeo.duplex; i[8] = bmeo.tumble; i[9] = bmeo.psl; i[10] = bmeo.dsc; i[11] = bmeo.dct; i[12] = bmeo.kar; i[13] = bmeo.bgr; i[14] = bmeo.bgg; i[15] = bmeo.bgb; i[16] = bmeo.fbg; i[17] = bmeo.ip; i[18] = bmeo.jip; i[19] = bmeo.make; i[20] = bmeo.rbpc; pHelper->retrieveMultipleDoubles(dkwxbmeps_double_setting_names, d); bmeo.ima.ps.w = d[0]; bmeo.ima.ps.h = d[1]; bmeo.ima.ps.i = d[2]; bmeo.ima.ps.o = d[3]; bmeo.ima.ps.t = d[4]; bmeo.ima.ps.b = d[5]; bmeo.resolution = d[6]; pHelper->retrieveMultipleInts(dkwxbmeps_int_setting_names, i); bmeo.dr = i[0]; bmeo.mode = i[1]; bmeo.szmode = i[2]; $? ". szmode = %d", bmeo.szmode /* bmeo.color = i[3]; */ bmeo.pred = i[4]; bmeo.io = i[5]; bmeo.draft = i[6]; bmeo.duplex = i[7]; bmeo.tumble = i[8]; bmeo.psl = i[9]; bmeo.dsc = i[10]; bmeo.dct = i[11]; bmeo.kar = i[12]; bmeo.bgr = i[13]; bmeo.bgg = i[14]; bmeo.bgb = i[15]; bmeo.fbg = i[16]; bmeo.ip = i[17]; bmeo.jip = i[18]; bmeo.make = i[19]; bmeo.rbpc = i[20]; currentPaperSize = 0; sDirectory = pHelper->retrieveString(dkwxbmeps_string_setting_names[0]); { wxChar const *psn; int j; psn = pHelper->retrieveString(dkwxbmeps_string_setting_names[1]); if(psn) { j = asPaperSizes->Index(psn); if(j != wxNOT_FOUND) { currentPaperSize = (size_t)j; } dk3_release(psn); } } $? "- DkWxBmepsFrame::retrieveData" /* ##### */ } void DkWxBmepsFrame::runConversion(void) { DkWxProgressDialog *pd = NULL; DkWxBmepsThread *pt = NULL; $? "+ runConversion" if(tStatus) { tStatus->SetLabel(sTexts[28]); if(cBlack) { tStatus->SetForegroundColour(*cBlack); } } if(pComm) { pComm->prepareRun(); pd = new DkWxProgressDialog( (DkWxFrame *)this, pComm, tLogmessages, sTexts[32], /* title */ sTexts[28], /* file name */ sTexts[33], /* button text */ sTexts[34], /* button tool tip */ sTexts[35] /* wait text */ ); if(pd) { pt = new DkWxBmepsThread( pComm, sTexts, msg, sDirectory, pHelper, pHelper->getWxEncoding(), pHelper->getDkEncoding(), &bmeo ); if(pt) { if(pt->checkSetup()) { if(pt->Create() == wxTHREAD_NO_ERROR) { pt->SetPriority(WXTHREAD_DEFAULT_PRIORITY); pt->Run(); pd->chooseModalPosition(); pd->ShowModal(); if(pComm->getLogLevel() <= DK3_LL_WARNING) { bGuiActive = true; } } else { $? "! pt->Create()" delete(pt); /* ##### ERROR: Failed to create new thread! */ } } else { /* ##### ERROR: Memory! */ delete(pt); } } else { $? "! pt" /* ##### ERROR: Failed to construct new thread! */ } pd->Destroy(); } else { $? "! pd" /* ##### ERROR: Failed to create progress dialog! */ } } else { $? "! pComm" /* ##### ERROR: Setup incomplete! */ } $? "- runConversion" } void DkWxBmepsFrame::OnIdle(wxIdleEvent & event) { dk3_time_t ct; /* Current time. */ $? "+ DkWxBmepsFrame::OnIdle" if(!bCloseScheduled) { if(!bSetupChecked) { bSetupChecked = true; if(!checkSetup()) { bCloseScheduled = true; /* ##### Show message: Failed to initialize! */ Show(false); Close(); } } if(!bCloseScheduled) { $? ". no close scheduled" if(pComm->autostartCanRun()) { $? ". can autostart" runConversion(); } else { $? ". can not autostart" if(pComm->autostartIsFinished()) { $? ". autostart finished" if(!(timeClose)) { if(pComm->getLogLevel() > DK3_LL_WARNING) { dk3sf_time(&timeClose); event.RequestMore(); tStatus->SetLabel(sTexts[30]); if((cGreen) && (cBlack)) { tStatus->SetForegroundColour(*cGreen); } Refresh(); Update(); } } } } if(timeClose) { dk3sf_time(&ct); if(ct > (timeClose + (dk3_time_t)1UL)) { timeClose = (dk3_time_t)0UL; bCloseScheduled = true; Show(false); Close(); } else { event.RequestMore(); } } } } $? "- DkWxBmepsFrame::OnIdle" } void DkWxBmepsFrame::OnChooseDirectory(wxCommandEvent& WXUNUSED(event)) { wxChar const *ptr; wxChar const *np; $? "+ DkWxBmepsFrame::OnChooseDirectory" if(isGuiActive()) { wxDirDialog dd( this, sTexts[29], ((sDirectory) ? sDirectory : wxEmptyString), (wxDD_DIR_MUST_EXIST | wxDD_CHANGE_DIR) ); pHelper->setRelatedPosition(this, &dd, &ddx, &ddy); if(dd.ShowModal() == wxID_OK) { wxString path = dd.GetPath(); ptr = path.c_str(); if(ptr) { np = dk3wxs_dup_app(ptr, pHelper->getApp()); if(np) { dk3_release(sDirectory); sDirectory = np; if(tDirectory) { tDirectory->SetLabel(sDirectory); Refresh(); Update(); } } } } dd.GetPosition(&ddx, &ddy); } $? "- DkWxBmepsFrame::OnChooseDirectory" } void DkWxBmepsFrame::OnRunConversion(wxCommandEvent& WXUNUSED(event)) { $? "+ DkWxBmepsFrame::OnRunConversion" if(isGuiActive()) { runConversion(); } $? "- DkWxBmepsFrame::OnRunConversion" } bool DkWxBmepsFrame::isGuiActive() { bool back; back = bGuiActive; $? "+ DkWxBmepsFrame::isGuiActive" if(bCloseScheduled) { back = false; } $? "- DkWxBmepsFrame::isGuiActive" return back; } bool DkWxBmepsFrame::canClose(bool isLast) { $? "+ DkWxBmepsFrame::canClose %d", (isLast ? 1 : 0) if(isLast) { if(bSaveSettings) { saveData(); } } $? "- DkWxBmepsFrame::canClose 1" return true; } void DkWxBmepsFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { $? "+ DkWxBmepsFrame::OnQuit" if(isGuiActive()) { bCloseScheduled = true; Show(false); Close(); } $? "- DkWxBmepsFrame::OnQuit" } bool DkWxBmepsFrame::checkSetup() { bool back = false; if(pComm) { if((cBlack) && (cGreen) && (cRed)) { if((asPaperSizes) && (paperSizes)) { back = true; } } } return back; } void DkWxBmepsFrame::OnSetOptions(wxCommandEvent& WXUNUSED(event)) { int dke; int wxe; $? "+ OnSetOptions" dke = pHelper->getDkEncoding(); wxe = pHelper->getWxEncoding(); if(isGuiActive()) { DkWxBmepsOptionsDialog dlg( (DkWxBmepsFrame *)this, sTexts[36], sTexts, asPaperSizes, &bmeo, paperSizes, ¤tPaperSize, pHelper, dke, wxe ); pHelper->setRelatedPosition(this, &dlg, &odx, &ody); dlg.dataIn(); if(dlg.ShowModal() == wxID_OK) { dk3mem_cpy( (void *)(&(bmeo.ima.ps)), (void *)(&(paperSizes[currentPaperSize])), sizeof(dk3_paper_size_t) ); $? "%lg %lg %lg %lg %lg %lg", bmeo.ima.ps.w, bmeo.ima.ps.h, bmeo.ima.ps.i, bmeo.ima.ps.o, bmeo.ima.ps.t, bmeo.ima.ps.b } dlg.GetPosition(&odx, &ody); } $? "- OnSetOptions" } void DkWxBmepsFrame::OnResetOptions(wxCommandEvent& WXUNUSED(event)) { int res; res = wxMessageBox( sTexts[103], sTexts[104], wxNO_DEFAULT|wxYES_NO ); if(res == wxYES) { dk3bmeo_init(&bmeo); } } void DkWxBmepsFrame::findPaperSizes() { wxChar bu[64]; dk3_paper_size_collection_t *psc; dk3_named_paper_size_t const *nsz; dk3_paper_size_t *pps; dk3_app_t *app; $? "+ DkWxBmepsFrame::findPaperSizes" if(asPaperSizes) { $? ". asPaperSizes ok" app = pHelper->getApp(); psc = dk3paper_open_app(app); if(psc) { $? ". psc ok" dk3paper_reset(psc); while((nsz = dk3paper_next(psc)) != NULL) { if(nsz->name) { if(pHelper->dkToWx(bu, DK3_SIZEOF(bu,wxChar), nsz->name)) { $? ". register \"%s\"", nsz->name asPaperSizes->Add(bu); nPaperSizes++; } } } if(nPaperSizes) { $? ". nPaperSizes %u", (unsigned)nPaperSizes paperSizes = dk3_new_app(dk3_paper_size_t,nPaperSizes,app); if(paperSizes) { $? ". paperSizes ok" pps = paperSizes; dk3paper_reset(psc); while((nsz = dk3paper_next(psc)) != NULL) { if(nsz->name) { if(pHelper->dkToWx(bu, DK3_SIZEOF(bu,wxChar), nsz->name)) { $? ". register \"%s\"", nsz->name dk3mem_cpy( (void *)pps, (void *)(&(nsz->size)), sizeof(dk3_paper_size_t) ); pps++; } } } } } dk3paper_close(psc); } } $? "- DkWxBmepsFrame::findPaperSizes" } void DkWxBmepsFrame::OnHelpContents(wxCommandEvent& WXUNUSED(event)) { openHelp(); } void DkWxBmepsFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { if(isGuiActive()) { wxString sVersion(wxbmpp_version); sVersion.Append(wxbmpp_versnumber); sVersion.Append(wxbmpp_versend); sVersion.Append(wxT("\nCopyright (c) 2013 - Dirk Krause\n\n")); sVersion.Append(sTexts[123]); sVersion.Append(wxT("DK tools, wxWidgets, libpng, libjpeg, libtiff, zlib.")); sVersion.Append(wxT("\n\n")); sVersion.Append(sTexts[124]); sVersion.Append(wxT("http://dktools.sourceforge.net\n")); sVersion.Append(wxT("http://www.wxwidgets.org\n")); sVersion.Append(wxT("http://www.libpng.org/pub/png/libpng.html\n")); sVersion.Append(wxT("http://www.ijg.org\n")); sVersion.Append(wxT("http://www.remotesensing.org/libtiff\n")); sVersion.Append(wxT("http://www.zlib.org")); wxMessageBox(sVersion, sTexts[122]); } }