cmdline = /home/user/Testing/upp-posix-16656/upp/examples/UWord/UWord.cpp -DflagDEBUG -DflagDEBUG_FULL -DflagMAIN -DflagCLANG -std=c++14 -xc++ -Wno-logical-op-parentheses -Wno-pragma-pack -Dlint cmdline0 = /home/user/Testing/upp-posix-16656/upp/examples/UWord/UWord.cpp -DflagDEBUG -DflagDEBUG_FULL -DflagMAIN -DflagCLANG -std=c++14 -xc++ -Wno-logical-op-parentheses -Wno-pragma-pack filename = /home/user/Testing/upp-posix-16656/upp/examples/UWord/UWord.cpp content = #include #include using namespace Upp; #define IMAGECLASS UWordImg #define IMAGEFILE #include FileSel& UWordFs() { static FileSel fs; return fs; } FileSel& PdfFs() { static FileSel fs; return fs; } class UWord : public TopWindow { public: virtual void DragAndDrop(Point, PasteClip& d); virtual void FrameDragAndDrop(Point, PasteClip& d); protected: RichEdit editor; MenuBar menubar; ToolBar toolbar; StatusBar statusbar; String filename; static LRUList& lrufile() { static LRUList l; return l; } void Load(const String& filename); void OpenFile(const String& fn); void New(); void Open(); void Save0(); void Save(); void SaveAs(); void Print(); void Pdf(); void About(); void Destroy(); void SetBar(); void FileBar(Bar& bar); void AboutMenu(Bar& bar); void MainMenu(Bar& bar); void MainBar(Bar& bar); public: typedef UWord CLASSNAME; static void SerializeApp(Stream& s); UWord(); }; void UWord::FileBar(Bar& bar) { bar.Add("New", CtrlImg::new_doc(), THISBACK(New)) .Key(K_CTRL_N) .Help("Open new window"); bar.Add("Open..", CtrlImg::open(), THISBACK(Open)) .Key(K_CTRL_O) .Help("Open existing document"); bar.Add(editor.IsModified(), "Save", CtrlImg::save(), THISBACK(Save)) .Key(K_CTRL_S) .Help("Save current document"); bar.Add("SaveAs", CtrlImg::save_as(), THISBACK(SaveAs)) .Help("Save current document with a new name"); bar.ToolGap(); bar.MenuSeparator(); bar.Add("Print..", CtrlImg::print(), THISBACK(Print)) .Key(K_CTRL_P) .Help("Print document"); bar.Add("Export to PDF..", UWordImg::pdf(), THISBACK(Pdf)) .Help("Export document to PDF file"); if(bar.IsMenuBar()) { if(lrufile().GetCount()) lrufile()(bar, THISBACK(OpenFile)); bar.Separator(); bar.Add("Exit", THISBACK(Destroy)); } } void UWord::AboutMenu(Bar& bar) { bar.Add("About..", THISBACK(About)); } void UWord::MainMenu(Bar& bar) { bar.Add("File", THISBACK(FileBar)); bar.Add("Window", callback(WindowsMenu)); bar.Add("Help", THISBACK(AboutMenu)); } void UWord::New() { new UWord; } bool IsRTF(const char *fn) { return ToLower(GetFileExt(fn)) == ".rtf"; } void UWord::Load(const String& name) { lrufile().NewEntry(name); if(IsRTF(name)) editor.Pick(ParseRTF(LoadFile(name))); else editor.SetQTF(LoadFile(name)); filename = name; editor.ClearModify(); Title(filename); } void UWord::OpenFile(const String& fn) { if(filename.IsEmpty() && !editor.IsModified()) Load(fn); else (new UWord)->Load(fn); } void UWord::Open() { FileSel& fs = UWordFs(); if(fs.ExecuteOpen()) OpenFile(fs); else statusbar.Temporary("Loading aborted."); } void UWord::DragAndDrop(Point, PasteClip& d) { if(IsAvailableFiles(d)) { Vector fn = GetFiles(d); for(int open = 0; open < 2; open++) { for(int i = 0; i < fn.GetCount(); i++) { String ext = GetFileExt(fn[i]); if(FileExists(fn[i]) && (ext == ".rtf" || ext == ".qtf")) { if(open) OpenFile(fn[i]); else { if(d.Accept()) break; return; } } } if(!d.IsAccepted()) return; } } } void UWord::FrameDragAndDrop(Point p, PasteClip& d) { DragAndDrop(p, d); } void UWord::Save0() { lrufile().NewEntry(filename); if(filename.IsEmpty()) SaveAs(); else { if(SaveFile(filename, IsRTF(filename) ? EncodeRTF(editor.Get()) : editor.GetQTF())) { statusbar.Temporary("File " + filename + " was saved."); ClearModify(); } else Exclamation("Error saving the file [* " + DeQtf(filename) + "]!"); } } void UWord::Save() { if(!editor.IsModified()) return; Save0(); } void UWord::SaveAs() { FileSel& fs = UWordFs(); if(fs.ExecuteSaveAs()) { filename = fs; Title(filename); Save0(); } } void UWord::Print() { editor.Print(); } void UWord::Pdf() { FileSel& fs = PdfFs(); if(!fs.ExecuteSaveAs("Output PDF file")) return; Size page = Size(3968, 6074); PdfDraw pdf; UPP::Print(pdf, editor.Get(), page); SaveFile(~fs, pdf.Finish()); } void UWord::About() { PromptOK("[A5 uWord]&Using [*^www://upp.sf.net^ U`+`+] technology."); } void UWord::Destroy() { if(editor.IsModified()) { switch(PromptYesNoCancel("Do you want to save the changes to the document?")) { case 1: Save(); break; case -1: return; } } delete this; } void UWord::MainBar(Bar& bar) { FileBar(bar); bar.Separator(); editor.DefaultBar(bar); } void UWord::SetBar() { toolbar.Set(THISBACK(MainBar)); } UWord::UWord() { #ifdef PLATFORM_COCOA SetMainMenu(THISBACK(MainMenu)); #else AddFrame(menubar); #endif AddFrame(TopSeparatorFrame()); AddFrame(toolbar); AddFrame(statusbar); Add(editor.SizePos()); menubar.Set(THISBACK(MainMenu)); Sizeable().Zoomable(); WhenClose = THISBACK(Destroy); menubar.WhenHelp = toolbar.WhenHelp = statusbar; static int doc; Title(Format("Document%d", ++doc)); Icon(CtrlImg::File()); editor.ClearModify(); SetBar(); editor.WhenRefreshBar = THISBACK(SetBar); OpenMain(); ActiveFocus(editor); } void UWord::SerializeApp(Stream& s) { int version = 1; s / version; s % UWordFs() % PdfFs(); if(version >= 1) s % lrufile(); } GUI_APP_MAIN { StdLogSetup(LOG_FILE|LOG_ELAPSED); SetLanguage(LNG_ENGLISH); SetDefaultCharset(CHARSET_UTF8); UWordFs().Type("QTF files", "*.qtf") .Type("RTF files", "*.rtf") .AllFilesType() .DefaultExt("qtf"); PdfFs().Type("PDF files", "*.pdf") .AllFilesType() .DefaultExt("pdf"); LoadFromFile(callback(UWord::SerializeApp)); new UWord; Ctrl::EventLoop(); StoreToFile(callback(UWord::SerializeApp)); } content2 = argv = [-I/home/user/Testing/upp-posix-16656/upp/examples, -I/home/user/Testing/upp-posix-16656/upp/uppsrc, -I/usr/include, -I/usr/include/freetype2, -I/usr/include/libpng16, -I/usr/include/harfbuzz, -I/usr/include/glib-2.0, -I/usr/lib/glib-2.0/include, -I/usr/include/sysprof-4, -I/usr/include/freetype2, -I/usr/include/libpng16, -I/usr/include/harfbuzz, -I/usr/include/glib-2.0, -I/usr/lib/glib-2.0/include, -I/usr/include/sysprof-4, -I/usr/include/freetype2, -I/usr/include/libpng16, -I/usr/include/harfbuzz, -I/usr/include/glib-2.0, -I/usr/lib/glib-2.0/include, -I/usr/include/sysprof-4, -I/usr/include/gtk-3.0, -I/usr/include/pango-1.0, -I/usr/include/glib-2.0, -I/usr/lib/glib-2.0/include, -I/usr/include/sysprof-4, -I/usr/include/harfbuzz, -I/usr/include/freetype2, -I/usr/include/libpng16, -I/usr/include/libmount, -I/usr/include/blkid, -I/usr/include/fribidi, -I/usr/include/cairo, -I/usr/include/lzo, -I/usr/include/pixman-1, -I/usr/include/gdk-pixbuf-2.0, -I/usr/include/gio-unix-2.0, -I/usr/include/cloudproviders, -I/usr/include/atk-1.0, -I/usr/include/at-spi2-atk/2.0, -I/usr/include/at-spi-2.0, -I/usr/include/dbus-1.0, -I/usr/lib/dbus-1.0/include, -I/usr/include/gdk-pixbuf-2.0, -I/usr/include/glib-2.0, -I/usr/lib/glib-2.0/include, -I/usr/include/sysprof-4, -I/usr/include/libpng16, -I/usr/include/libmount, -I/usr/include/blkid, -I/usr/include/libpng16, -I/usr/include/c++/12.2.1, -I/usr/include/c++/12.2.1/x86_64-pc-linux-gnu, -I/usr/include/c++/12.2.1/backward, -I/usr/lib/clang/15.0.7/include, -I/usr/local/include, -I/usr/include, -I/home/user/Testing/upp-posix-16656/upp/examples/UWord, -I/home/user/Testing/upp-posix-16656/upp/.config/u++/ide/.cache/upp.cache/fake_build_info, -DflagGUI, -DflagPOSIX, -DflagLINUX, -DCLANG, /home/user/Testing/upp-posix-16656/upp/examples/UWord/UWord.cpp, -DflagDEBUG, -DflagDEBUG_FULL, -DflagMAIN, -DflagCLANG, -std=c++14, -xc++, -Wno-logical-op-parentheses, -Wno-pragma-pack, -Dlint] options & PARSE_FILE = 0