]> Shamusworld >> Repos - ttedit/blobdiff - src/ttedit.cpp
Separated out app object, added character window.
[ttedit] / src / ttedit.cpp
index c8123773ce2bfd885d23197e36a42ae2f99c9c74..54617e944e4ec6d47f485cb2c05d741814bb44db 100755 (executable)
 //
 
 // Uncomment this for debugging...
-#define DEBUG
-#define DEBUGFOO                       // Various tool debugging...
-#define DEBUGTP                                // Toolpalette debugging...
+//#define DEBUG
+//#define DEBUGFOO                     // Various tool debugging...
+//#define DEBUGTP                              // Toolpalette debugging...
 
-//#include <QtGui>
 #include "ttedit.h"
 #include <QApplication>
-#include "editwindow.h"
+#include "ttemainwindow.h"
+//#include "charwindow.h"
 
-// Here's the main application loop--short and simple...
-int main(int argc, char * argv[])
-{
-       Q_INIT_RESOURCE(ttedit);        // This must the same name as the exe filename
-
-       QApplication app(argc, argv);
-       TTEMainWindow TTEWin;
-       TTEWin.show();
-       return app.exec();
-}
-
-
-TTEMainWindow::TTEMainWindow()
-{
-       editWnd = new EditWindow(this);
-       setCentralWidget(editWnd);
-       setWindowIcon(QIcon(":/res/ttedit.png"));
-       setWindowTitle("TTEdit!");
-
-#if 0
-//     createActions();
-       newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this);
-       newAct->setShortcuts(QKeySequence::New);
-       newAct->setStatusTip(tr("Create a new file"));
-       connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
-
-       openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
-       openAct->setShortcuts(QKeySequence::Open);
-       openAct->setStatusTip(tr("Open an existing file"));
-       connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
-
-       aboutQtAct = new QAction(tr("About &Qt"), this);
-       aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
-       connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
-
-//     createMenus();
-       fileMenu = menuBar()->addMenu(tr("&File"));
-       fileMenu->addAction(newAct);
-       fileMenu->addAction(openAct);
-       fileMenu->addAction(saveAct);
-       fileMenu->addAction(saveAsAct);
-       fileMenu->addSeparator();
-       fileMenu->addAction(exitAct);
-
-       editMenu = menuBar()->addMenu(tr("&Edit"));
-       editMenu->addAction(cutAct);
-       editMenu->addAction(copyAct);
-       editMenu->addAction(pasteAct);
-
-       menuBar()->addSeparator();
-
-       helpMenu = menuBar()->addMenu(tr("&Help"));
-       helpMenu->addAction(aboutAct);
-       helpMenu->addAction(aboutQtAct);
-
-//     createToolBars();
-       fileToolBar = addToolBar(tr("File"));
-       fileToolBar->addAction(newAct);
-       fileToolBar->addAction(openAct);
-       fileToolBar->addAction(saveAct);
-
-       editToolBar = addToolBar(tr("Edit"));
-       editToolBar->addAction(cutAct);
-       editToolBar->addAction(copyAct);
-       editToolBar->addAction(pasteAct);
-#endif
-
-       //      Create status bar
-       statusBar()->showMessage(tr("Ready"));
-
-       ReadSettings();
-
-//     connect(textEdit->document(), SIGNAL(contentsChanged()),
-//                     this, SLOT(documentWasModified()));
-
-//     setCurrentFile("");
-       setUnifiedTitleAndToolBarOnMac(true);
-}
-
-void TTEMainWindow::closeEvent(QCloseEvent * event)
-{
-       WriteSettings();
-       event->accept(); // ignore() if can't close for some reason
-}
-
-void TTEMainWindow::Open(void)
-{
-}
-
-void TTEMainWindow::ReadSettings(void)
-{
-       QSettings settings("Underground Software", "TTEdit");
-       QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
-       QSize size = settings.value("size", QSize(400, 400)).toSize();
-       resize(size);
-       move(pos);
-}
-
-void TTEMainWindow::WriteSettings(void)
-{
-       QSettings settings("Underground Software", "TTEdit");
-       settings.setValue("pos", pos());
-       settings.setValue("size", size());
-}
-
-
-#if 0
-#include "ttedit.h"
-#include "charwindow.h"
-#include "toolwindow.h"
-#include "editwindow.h"
-#include "tte_res.h"                                                   // Resource IDs
-#ifdef DEBUG
-#include "debug.h"
-#endif
-
-// Pixmap resouces
-
-#include "res/cur1.xpm"
-#include "res/cur2.xpm"
-#include "res/cur3.xpm"
-#include "res/cur4.xpm"
-#include "res/cur5.xpm"
-#include "res/cur6.xpm"
-#include "res/cur7.xpm"
-#include "res/cur8.xpm"
-#include "res/ttedit.xpm"                                              // *nix only, but small enough to not matter
-#include "res/tool1.xpm"
-#include "res/tool2.xpm"
-#include "res/tool3.xpm"
-
-
-IMPLEMENT_APP(TTEditApp)                                               // Run the main application loop
-
-bool TTEditApp::OnInit()
-{
-       wxLog * logTarget = new wxLogStderr();//fopen("!ttedit_log.txt", "wb"));
-       wxLog::SetActiveTarget(logTarget);
-#ifdef DEBUG
-       OpenDebugLog();
-#endif
-
-       // Initialize all the top-level window members to NULL.
-       mainFrame = NULL;
-       charWin = NULL;
-       toolPalette = NULL;
-       for(int i=0; i<8; i++)
-               cur[i] = NULL;
+// Main app constructor--we stick globally accessible stuff here...
 
-//Shouldn't we check to see if it was successful? This just assumes
-       CreateResources();
-
-       mainFrame = new TTEditFrame(NULL, _("TTEdit"), wxPoint(155, 165), wxSize(300, 300),
-               wxDEFAULT_FRAME_STYLE | wxFULL_REPAINT_ON_RESIZE);
-//             wxMINIMIZE_BOX | wxRESIZE_BOX | wxMAXIMIZE_BOX | | wxSYSTEM_MENU | wxCAPTION);
-
-//     charWin = new CharWindow(NULL);//, _T("Own3d W1nd0w"), wxDefaultPosition, wxDefaultSize);
-       charWin = new CharWindow(mainFrame, _("Own3d W1nd0w"), wxDefaultPosition, wxDefaultSize,
-               wxCAPTION | wxRESIZE_BORDER | wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT);
-
-       toolPalette = new ToolWindow(mainFrame, _(""), wxDefaultPosition, wxDefaultSize,
-               wxBORDER_NONE | wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT);
-
-       return true;
-}
-
-int TTEditApp::OnExit()
-{
-#ifdef DEBUG
-       CloseDebugLog();
-#endif
-       for(int i=0; i<8; i++)
-               if (cur[i])
-                       delete cur[i];
-
-       return 0;
-}
-
-//
-// OS dependent method of creating cursor (works for Win32 and GTK+)
-//
-#define CREATE_CURSOR(storage, name, hsx, hsy) \
-       wxBitmap name##_bitmap(name##_xpm); \
-       wxImage name##_image = name##_bitmap.ConvertToImage(); \
-       name##_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hsx); \
-       name##_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, hsy); \
-       storage = new wxCursor(name##_image);
-
-void TTEditApp::CreateResources(void)
-{
-       // This is a sucky way to create cursors, but at least it's cross-platform...
-       // NOTE: Need to fix hotspots on a few... !!! FIX !!! [DONE]
-
-       CREATE_CURSOR(cur[0], cur1, 1, 1);
-       CREATE_CURSOR(cur[1], cur2, 1, 1);
-       CREATE_CURSOR(cur[2], cur3, 11, 11);    // Prolly won't need this soon (scroll)...
-       CREATE_CURSOR(cur[3], cur4, 15, 13);    // Prolly won't need this soon (zoom)...
-       CREATE_CURSOR(cur[4], cur5, 1, 1);
-       CREATE_CURSOR(cur[5], cur6, 1, 1);
-       CREATE_CURSOR(cur[6], cur7, 1, 1);
-       CREATE_CURSOR(cur[7], cur8, 1, 1);
-}
-
-
-BEGIN_EVENT_TABLE(TTEditFrame, wxFrame)
-       EVT_MENU(IDM_OPEN, TTEditFrame::OnOpen)
-       EVT_MENU(IDM_EXIT, TTEditFrame::OnExit)
-       EVT_MENU(IDM_ABOUT, TTEditFrame::OnAbout)
-       EVT_MENU(ID_TBCHARWIN, TTEditFrame::OnCharWindow)
-       EVT_CLOSE(TTEditFrame::OnCloseWindow)
-END_EVENT_TABLE()
-
-TTEditFrame::TTEditFrame(wxFrame * parent, const wxString &title, const wxPoint &pos,
-       const wxSize &size, long style): wxFrame(parent, -1, title, pos, size, style), app(wxGetApp()), mainWindow(NULL)
-{
-       // Initialize child subwindow members (and hopefully avoid subtle bugs)
-//     mainWindow = NULL;
-
-       SetIcon(wxICON(ttedit));
-//     CreateStatusBar(2);                                                     // Create 2 panes
-       int widths[2] = { -1, 120 };
-       wxStatusBar * sb = CreateStatusBar(2, 0);       // Create 2 panes
-       sb->SetStatusWidths(2, widths);
-       wxToolBar * tb = CreateToolBar();
-
-       if (tb != NULL)
-       {
-               // Create buttons
-
-               wxBitmap tool1(tool1_xpm);
-               wxBitmap tool2(tool2_xpm);
-               wxBitmap tool3(tool3_xpm);
-
-               tb->AddTool(ID_TBLEFT, _("Prev char"), tool1, _("Go to prev char"), wxITEM_NORMAL);
-               tb->AddTool(ID_TBRIGHT, _("Next char"), tool2, _("Go to next char"), wxITEM_NORMAL);
-               tb->AddTool(ID_TBCHARWIN, _("Char Wnd"), tool3, _("Toggle char window"), wxITEM_CHECK);
-               tb->Realize();
-       }
-
-       // Create a menu bar for the frame
-       menuBar = new wxMenuBar;
-       wxMenu * menu1 = new wxMenu;
-       menu1->Append(IDM_NEW, _("&New\tCtrl+N"), _("Create a new font."));
-       menu1->Append(IDM_OPEN, _("&Open...\tCtrl+O"), _("Opens an existing font."));
-       menu1->Append(IDM_SAVE, _("&Save\tCtrl+S"), _("Save the current font."));
-       menu1->Append(IDM_SAVEAS, _("Save &As..."), _("Save the current font under a different name."));
-       menu1->AppendSeparator();
-       menu1->Append(IDM_EXIT, _("E&xit\tAlt+X"), _("Quits the TTEdit program."));
-       menuBar->Append(menu1, _("&File"));
-       wxMenu * menu2 = new wxMenu;
-       menu2->Append(IDM_HELPTOPICS, _("&Help Topics"), _("Displays the Help contents and index."));
-       menu2->AppendSeparator();
-       menu2->Append(IDM_ABOUT, _("&About TTEdit"), _("Displays information about TTEdit."));
-       menuBar->Append(menu2, _("&Help"));
-       SetMenuBar(menuBar);
-
-       // Create child subwindows
-       mainWindow = new TTEditWindow(this);
-
-       Centre(wxBOTH);                                                         // Centre frame on the screen
-       Show(true);                                                                     // Show the frame
-}
-
-TTEditFrame::~TTEditFrame()
+TTEdit::TTEdit(int argc, char * argv[]): QApplication(argc, argv), charWnd(NULL)
 {
 }
 
-void TTEditFrame::OnOpen(wxCommandEvent &e)
-{
-       wxFileDialog fd(this, _("Choose a font to load"), _(""), _(""), _("TTF files (*.ttf)|*.ttf|All files (*.*)|*.*"), wxOPEN);
-
-       if (fd.ShowModal() != wxID_OK)
-           return;
-
-// Hmm. The font object is causing a massive crash... (gdb says it's in "Load")
-       if (app.font.Load((char *)fd.GetPath().c_str()) != true)
-       {
-               wxMessageDialog dlg(NULL, _("Load font failed!"), _("Houston, we have a problem..."), wxOK | wxICON_ERROR);
-               dlg.ShowModal();
-       }
 
-//Huzzah! It works! Now just need scaling, scrolling, etc...
-//     pts = app.font.GetGlyphPoints(45);
-}
-
-void TTEditFrame::OnAbout(wxCommandEvent &e)
-{
-       wxMessageDialog dlg(NULL, _("TrueType Edit v1.0.1\n\nA handy tool for editing TrueType fonts!\nby James \"Shamus\" Hammons\n(C) 2006 Underground Software"), _("About TrueType Edit"), wxOK | wxICON_INFORMATION);
-       dlg.ShowModal();
-}
-
-void TTEditFrame::OnExit(wxCommandEvent &e)
-{
-       app.toolPalette->Destroy();
-       this->Destroy();
-}
-
-void TTEditFrame::OnCharWindow(wxCommandEvent &e)
+// Here's the main application loop--short and simple...
+int main(int argc, char * argv[])
 {
-       app.charWin->Show(e.IsChecked() ? true : false);
+       Q_INIT_RESOURCE(ttedit);        // This must the same name as the exe filename
 
-       if (e.IsChecked())
-               Raise();
+//     QApplication app(argc, argv);
+//printf("TTEdit app(argc, argv);\n");
+       TTEdit app(argc, argv);
+//printf("TTEMainWindow mainWindow;\n");
+       TTEMainWindow mainWindow;
+//printf("mainWindow.show();\n");
+       mainWindow.show();
+//OK, it gets to here at least...
+//printf("return app.exec();\n");
+       return app.exec();
 }
 
-void TTEditFrame::OnCloseWindow(wxCloseEvent &e)
-{
-       app.toolPalette->Destroy();
-       this->Destroy();
-}
-#endif