]> git.saurik.com Git - wxWidgets.git/blobdiff - user/wxLayout/wxLayout.cpp
Listctrl updates
[wxWidgets.git] / user / wxLayout / wxLayout.cpp
index 925cba8edbbac7191268949bbac04f3aa825a136..8cbf257bbd550bcba144eca910881b38f8cd6cdc 100644 (file)
@@ -30,58 +30,95 @@ IMPLEMENT_APP(MyApp)
 // MyFrame
 //-----------------------------------------------------------------------------
 
-   enum ids{ ID_EDIT = 1, ID_ADD_SAMPLE, ID_CLEAR, ID_PRINT, ID_DPRINT,
-             ID_WXLAYOUT_DEBUG, ID_QUIT, ID_CLICK, ID_HTML, ID_TEXT };
+   enum ids{ ID_EDIT = 1, ID_ADD_SAMPLE, ID_CLEAR, ID_PRINT,
+             ID_PRINT_SETUP, ID_PAGE_SETUP, ID_PREVIEW, ID_PRINT_PS,
+             ID_PRINT_SETUP_PS, ID_PAGE_SETUP_PS,ID_PREVIEW_PS,
+             ID_DPRINT, ID_WRAP, ID_NOWRAP,
+             ID_WXLAYOUT_DEBUG, ID_QUIT, ID_CLICK, ID_HTML, ID_TEXT, ID_TEST };
 
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
    BEGIN_EVENT_TABLE(MyFrame,wxFrame)
-   EVT_MENU    (-1,       MyFrame::OnCommand)
-   EVT_COMMAND (-1,-1,    MyFrame::OnCommand)
-   EVT_CHAR    (  wxLayoutWindow::OnChar  )
+    EVT_MENU(ID_PRINT, MyFrame::OnPrint)
+    EVT_MENU(ID_PREVIEW, MyFrame::OnPrintPreview)
+    EVT_MENU(ID_PRINT_SETUP, MyFrame::OnPrintSetup)
+    EVT_MENU(ID_PAGE_SETUP, MyFrame::OnPageSetup)
+    EVT_MENU(ID_PRINT_PS, MyFrame::OnPrintPS)
+    EVT_MENU(ID_PREVIEW_PS, MyFrame::OnPrintPreviewPS)
+    EVT_MENU(ID_PRINT_SETUP_PS, MyFrame::OnPrintSetupPS)
+    EVT_MENU(ID_PAGE_SETUP_PS, MyFrame::OnPageSetupPS)
+    EVT_MENU    (-1,       MyFrame::OnCommand)
+    EVT_COMMAND (-1,-1,    MyFrame::OnCommand)
+    EVT_CHAR    (  wxLayoutWindow::OnChar  )
    END_EVENT_TABLE()
 
-   MyFrame::MyFrame(void) :
-      wxFrame( NULL, -1, "wxLayout", wxPoint(20,20), wxSize(600,360) )
+
+int orientation = wxPORTRAIT;
+
+MyFrame::MyFrame(void) :
+      wxFrame( (wxFrame *) NULL, -1, (char *) "wxLayout", wxPoint(20,20), wxSize(600,360) )
 {
    CreateStatusBar( 1 );
   
    SetStatusText( "wxLayout by Karsten Ballüder." );
 
-   wxMenu *file_menu = new wxMenu( "Menu 1" );
+   wxMenu *file_menu = new wxMenu;
    file_menu->Append( ID_CLEAR, "Clear");
    file_menu->Append( ID_ADD_SAMPLE, "Example");
-   file_menu->Append( ID_EDIT, "Edit");
-   file_menu->Append( ID_WXLAYOUT_DEBUG, "Debug");
-   file_menu->Append( ID_PRINT, "Print");
-   file_menu->Append( ID_DPRINT, "Direct Print");
+//   file_menu->Append( ID_EDIT, "Edit");
+//   file_menu->Append( ID_WXLAYOUT_DEBUG, "Debug");
+
+  file_menu->Append(ID_PRINT, "&Print...", "Print");
+  file_menu->Append(ID_PRINT_SETUP, "Print &Setup...","Setup printer properties");
+  file_menu->Append(ID_PAGE_SETUP, "Page Set&up...", "Page setup");
+  file_menu->Append(ID_PREVIEW, "Print Pre&view", "Preview");
+#ifdef __WXMSW__
+  file_menu->AppendSeparator();
+  file_menu->Append(ID_PRINT_PS, "Print PostScript...", "Print (PostScript)");
+  file_menu->Append(ID_PRINT_SETUP_PS, "Print Setup PostScript...", "Setup printer properties (PostScript)");
+  file_menu->Append(ID_PAGE_SETUP_PS, "Page Setup PostScript...", "Page setup (PostScript)");
+  file_menu->Append(ID_PREVIEW_PS, "Print Preview PostScript", "Preview (PostScript)");
+#endif
+  file_menu->AppendSeparator();
+  file_menu->Append(ID_WRAP, "Wrap mode", "Activate wrapping at pixel 200.");
+  file_menu->Append(ID_NOWRAP, "No-wrap mode", "Deactivate wrapping.");
+
+  file_menu->AppendSeparator();
+//   file_menu->Append( ID_DPRINT, "Direct Print");
    file_menu->Append( ID_TEXT, "Export Text");
    file_menu->Append( ID_HTML, "Export HTML");
+//   file_menu->Append( ID_TEST, "Test");
    file_menu->Append( ID_QUIT, "Exit");
   
    wxMenuBar *menu_bar = new wxMenuBar();
    menu_bar->Append(file_menu, "File" );
+
+#ifndef __WXMSW__
    menu_bar->Show( TRUE );
+#endif // MSW
   
    SetMenuBar( menu_bar );
 
    m_lwin = new wxLayoutWindow(this);
-   m_lwin->SetEventId(ID_CLICK);
+   m_lwin->SetMouseTracking(true);
    m_lwin->GetLayoutList().SetEditable(true);
+   m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false);
    m_lwin->SetFocus();
 };
 
 void
 MyFrame::AddSampleText(wxLayoutList &llist)
 {
+   llist.SetFont(wxROMAN,16,wxNORMAL,wxNORMAL, false);
+   llist.Insert("--");
+   llist.LineBreak();
 
-   llist.Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false);
-
+   llist.SetFont(wxROMAN);
    llist.Insert("The quick brown fox jumps over the lazy dog.");
    llist.LineBreak();
    llist.Insert("Hello ");
-   llist.Insert(new wxLayoutObjectIcon(new wxIcon(Micon_xpm,-1,-1)));
+   llist.Insert(new wxLayoutObjectIcon(new wxICON(Micon)));
    llist.LineBreak();
    llist.SetFontWeight(wxBOLD);
    llist.Insert("World! ");
@@ -114,9 +151,9 @@ MyFrame::AddSampleText(wxLayoutList &llist)
    llist.Insert("blue");
    llist.SetFont(-1,-1,-1,-1,-1,"black");
    llist.Insert(" and ");
-   llist.SetFont(-1,-1,-1,-1,-1,"red","black");
-   llist.Insert("red on black");
-   llist.SetFont(-1,-1,-1,-1,-1,"black");
+   llist.SetFont(-1,-1,-1,-1,-1,"green","black");
+   llist.Insert("green on black");
+   llist.SetFont(-1,-1,-1,-1,-1,"black","white");
    llist.Insert(" text.");
    llist.LineBreak();
 
@@ -147,15 +184,17 @@ MyFrame::AddSampleText(wxLayoutList &llist)
          llist.LineBreak();
       }
    }
-
+   
    m_lwin->Refresh();
    m_lwin->UpdateScrollbars();
+   llist.SetEditable();
+   llist.SetCursor(wxPoint(0,0));
 }
 
 void
 MyFrame::Clear(void)
 {
-   m_lwin->Erase();
+   m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false);
    m_lwin->UpdateScrollbars();
 }
 
@@ -163,14 +202,14 @@ MyFrame::Clear(void)
 void MyFrame::Edit(void)
 {
    wxLayoutList & llist = m_lwin->GetLayoutList();
-   m_lwin->SetEventId(ID_CLICK);
+   //m_lwin->SetEventId(ID_CLICK);
   
    llist.MoveCursor(0);
    llist.MoveCursor(5);
    llist.MoveCursor(0,2);
    llist.Delete(2);
    llist.MoveCursor(2);
-   llist.Insert("not all so ");
+   llist.Insert("not");
    llist.LineBreak();
    m_lwin->Refresh();
 }
@@ -186,6 +225,11 @@ void MyFrame::OnCommand( wxCommandEvent &event )
    case ID_PRINT:
       m_lwin->Print();
       break;
+   case ID_NOWRAP:
+   case ID_WRAP:
+      m_lwin->GetLayoutList().SetWrapMargin(
+         event.GetId() == ID_NOWRAP ? -1 : 40);
+      break;
    case ID_DPRINT:
    {
       wxLayoutList llist;
@@ -249,6 +293,141 @@ void MyFrame::OnCommand( wxCommandEvent &event )
    }
 };
 
+void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+      wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
+#else
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+#endif
+      wxPrinter printer;
+      wxLayoutPrintout printout( m_lwin->GetLayoutList(),"Printout from wxLayout");
+      if (! printer.Print(this, &printout, TRUE))
+         wxMessageBox(
+            "There was a problem printing.\nPerhaps your current printer is not set correctly?",
+            "Printing", wxOK);  
+}
+
+void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event))
+{
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+
+      wxPostScriptPrinter printer;
+      wxLayoutPrintout printout( m_lwin->GetLayoutList(),"My printout");
+      printer.Print(this, &printout, TRUE);
+}
+
+void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+      wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
+#else
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+#endif
+      wxPrintData printData;
+      printData.SetOrientation(orientation);
+
+      // Pass two printout objects: for preview, and possible printing.
+      wxPrintPreview *preview = new wxPrintPreview(new
+                                                   wxLayoutPrintout(
+                                                      m_lwin->GetLayoutList()), new wxLayoutPrintout( m_lwin->GetLayoutList()), & printData);  
+      if (!preview->Ok())
+      {
+        delete preview;
+        wxMessageBox("There was a problem previewing.\nPerhaps your current printer is not set correctly?", "Previewing", wxOK);
+        return;
+      }
+      
+      wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650));
+      frame->Centre(wxBOTH);
+      frame->Initialize();
+      frame->Show(TRUE);
+}
+
+void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
+{
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+
+      wxPrintData printData;
+      printData.SetOrientation(orientation);
+
+      // Pass two printout objects: for preview, and possible printing.
+      wxPrintPreview *preview = new wxPrintPreview(new wxLayoutPrintout( m_lwin->GetLayoutList()), new wxLayoutPrintout( m_lwin->GetLayoutList()), & printData);
+      wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650));
+      frame->Centre(wxBOTH);
+      frame->Initialize();
+      frame->Show(TRUE);
+}
+
+void MyFrame::OnPrintSetup(wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+      wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
+#else
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+#endif
+      wxPrintData data;
+      data.SetOrientation(orientation);
+
+#ifdef __WXMSW__
+      wxPrintDialog printerDialog(this, & data);
+#else
+      wxGenericPrintDialog printerDialog(this, & data);
+#endif
+      printerDialog.GetPrintData().SetSetupDialog(TRUE);
+      printerDialog.ShowModal();
+
+      orientation = printerDialog.GetPrintData().GetOrientation();
+}
+
+void MyFrame::OnPageSetup(wxCommandEvent& WXUNUSED(event))
+{
+#ifdef __WXMSW__
+      wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
+#else
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+#endif
+      wxPageSetupData data;
+      data.SetOrientation(orientation);
+
+#ifdef __WXMSW__
+      wxPageSetupDialog pageSetupDialog(this, & data);
+#else
+      wxGenericPageSetupDialog pageSetupDialog(this, & data);
+#endif
+      pageSetupDialog.ShowModal();
+
+      data = pageSetupDialog.GetPageSetupData();
+      orientation = data.GetOrientation();
+}
+
+void MyFrame::OnPrintSetupPS(wxCommandEvent& WXUNUSED(event))
+{
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+
+      wxPrintData data;
+      data.SetOrientation(orientation);
+
+      wxGenericPrintDialog printerDialog(this, & data);
+      printerDialog.GetPrintData().SetSetupDialog(TRUE);
+      printerDialog.ShowModal();
+
+      orientation = printerDialog.GetPrintData().GetOrientation();
+}
+
+void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event))
+{
+      wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
+
+      wxPageSetupData data;
+      data.SetOrientation(orientation);
+
+      wxGenericPageSetupDialog pageSetupDialog(this, & data);
+      pageSetupDialog.ShowModal();
+
+      orientation = pageSetupDialog.GetPageSetupData().GetOrientation();
+}
+
 
 //-----------------------------------------------------------------------------
 // MyApp
@@ -263,7 +442,7 @@ bool MyApp::OnInit(void)
 {
    wxFrame *frame = new MyFrame();
    frame->Show( TRUE );
-   wxSetAFMPath("/usr/local/src/wxWindows/misc/afm/");
+//   wxSetAFMPath("/usr/local/src/wxWindows/misc/afm/");
    return TRUE;
 };