4 // Main class for Aven.
6 // Copyright (C) 2001, Mark R. Shinwell.
7 // Copyright (C) 2002,2003,2004,2005,2006,2015 Olly Betts
9 // This program is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 2 of the License, or
12 // (at your option) any later version.
14 // This program is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License
20 // along with this program; if not, write to the Free Software
21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 /* Note: this header needs to be safe to include from C code */
31 #define APP_NAME wxT("Aven")
32 #define APP_ABOUT_IMAGE wxT("aven-about.png")
38 void aven_v_report(int severity
, const char *fnm
, int line
, int en
,
48 string_formatv(const char * fmt
, va_list args
)
50 static size_t len
= 4096;
51 static char * buf
= NULL
;
53 if (!buf
) buf
= new char[len
];
54 int r
= vsnprintf(buf
, len
, fmt
, args
);
55 if (r
< int(len
) && r
!= -1) {
56 return std::string(buf
, r
);
65 string_format(const char * fmt
, ...)
69 std::string s
= string_formatv(fmt
, args
);
74 // wmsg is the unicode version of msg.
75 wxString
wmsg(int msg_no
);
77 const wxString
& wmsg_cfgpth();
81 extern bool double_buffered
;
83 class wxPageSetupDialogData
;
85 class Aven
: public wxGLApp
{
87 // This must be a pointer, otherwise it gets initialised too early and
88 // we get a segfault on MS Windows when it tries to look up paper
89 // sizes in wxThePrintPaperDatabase which is still NULL at the point
90 // when the Aven class is constructed.
91 wxPageSetupDialogData
* m_pageSetupData
;
98 virtual bool Initialize(int& argc
, wxChar
**argv
);
100 virtual bool OnInit();
102 wxPageSetupDialogData
* GetPageSetupDialogData();
103 void SetPageSetupDialogData(const wxPageSetupDialogData
& psdd
);
106 void MacOpenFiles(const wxArrayString
& filenames
);
107 void MacPrintFiles(const wxArrayString
& filenames
);
110 void ReportError(const wxString
&);