FreeburnAbout.cpp
上传用户:cnxinhai
上传日期:2013-08-06
资源大小:265k
文件大小:9k
源码类别:

DVD

开发平台:

Visual C++

  1. /* This is the class definition for the About Dialog.
  2.  *
  3.  * Copyright (C) 2001, 2002  Adam Schlag
  4.  */
  5. /*
  6.  * FreeBurn Software License
  7.  * (based on the Apache Software License)
  8.  * 
  9.  * Version 1.1
  10.  * 
  11.  * Copyright (c) 2001, 2002 The FreeBurn Project. All rights reserved.
  12.  * 
  13.  * Redistribution and use in source and binary forms, with or without 
  14.  * modification, are permitted provided that the following conditions are met:
  15.  * 
  16.  * 1. Redistributions of source code must retain the above copyright 
  17.  * notice, this list of conditions and the following disclaimer.
  18.  * 
  19.  * 2. Redistributions in binary form must reproduce the above copyright 
  20.  * notice, this list of conditions and the following disclaimer in the 
  21.  * documentation and/or other materials provided with the distribution.
  22.  * 
  23.  * 3. The end-user documentation included with the redistribution, if any, must 
  24.  * include the following acknowledgment:
  25.  * 
  26.  *  "This product includes software developed by the FreeBurn 
  27.  *     Project (http://freeburn.sourceforge.net/)."
  28.  * 
  29.  * Alternately, this acknowledgment may appear in the software itself, 
  30.  * if and wherever such third-party acknowledgments normally appear.
  31.  * 
  32.  * 4. The names "FreeBurn" and "FreeBurn Project" must not be 
  33.  * used to endorse or promote products derived from this software 
  34.  * without prior written permission. For written permission, please 
  35.  * contact aschlag@users.sourceforge.net.
  36.  * 
  37.  * 5. Products derived from this software may not be called "FreeBurn", 
  38.  * nor may "FreeBurn" appear in their name, without prior written 
  39.  * permission of the FreeBurn Project.
  40.  * 
  41.  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED 
  42.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
  43.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  44.  * DISCLAIMED. IN NO EVENT SHALL THE FREEBURN PROJECT OR ITS 
  45.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  46.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
  47.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
  48.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
  49.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
  50.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
  51.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  52.  * SUCH DAMAGE.
  53.  * 
  54.  * This software consists of voluntary contributions made by many 
  55.  * individuals on behalf of the FreeBurn Project. For more 
  56.  * information on the FreeBurn Project and FreeBurn, please see 
  57.  * <http://freeburn.sourceforge.net/>.
  58.  * 
  59.  * This software is distributed with software that is released under the GNU 
  60.  * General Public License (GPL).  You can find the terms of this license in the
  61.  * file GPL.txt distributed in this package.  You can find information on the
  62.  * software distributed with this package in the file PROGRAMS.txt.
  63.  */
  64. #include <fx.h>
  65. #include <FXPNGIcon.h>
  66. #include "FreeBurn.h"
  67. #include "FreeburnAbout.h"
  68. #include "FreeburnDefs.h"
  69. #include "FreeburnAboutText.h"
  70. #ifndef FREEBURN_ICONS_H
  71. #include "FreeburnIcons.h"
  72. #define FREEBURN_ICONS_H
  73. #endif
  74. FXIMPLEMENT(CFreeburnAbout,FXDialogBox,NULL,0)
  75. // Construct help dialog box
  76. CFreeburnAbout::CFreeburnAbout(FXWindow *owner):
  77.   FXDialogBox(owner,fbAboutTitleText,DECOR_TITLE|DECOR_BORDER, 0, 0, 0, 0, 6, 6, 6, 6, 4, 4)
  78. {
  79.     // Setup a vertical frame for the rest of the dialog
  80.     FXVerticalFrame* ContentFrame = new FXVerticalFrame(this, LAYOUT_FILL_X|LAYOUT_FILL_Y);
  81.     
  82.     // set up the font to use in the text widgets used in the dialog
  83.     FXFont* textFont  = new FXFont(getApp(), SANS_SERIF, 10);
  84.     // set up a fixed font for the panes that will look better with a fixed font
  85.     FXFont* fixedFont = new FXFont(getApp(), FIXED_FONT, 10);
  86.     
  87.     // Setup the switcher to hold the items described in the dialog
  88.     FXSwitcher* aboutSwitcher = new FXSwitcher(ContentFrame, LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|FRAME_RIDGE);
  89.     
  90.     // Place the about message in the first tab
  91.     FXString message = fbAboutContentsText;
  92.     FXHorizontalFrame* aboutFrame = new FXHorizontalFrame(aboutSwitcher, LAYOUT_FILL_X|LAYOUT_FILL_Y);
  93.     // Place the dialog icon, or picture
  94.     m_DialogIcon = new FXPNGIcon(getApp(), freeburn_fullsize_png);
  95.     new FXLabel(aboutFrame, NULL, m_DialogIcon,LAYOUT_FILL_Y|JUSTIFY_CENTER_X|JUSTIFY_CENTER_Y,
  96.         0, 0, 0, 0, 0, 20, 0, 0);
  97.     new FXLabel(aboutFrame, message, NULL, LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  98.     
  99.     // Place the credits message in the second tab
  100.     FXVerticalFrame* CreditsFrame = new FXVerticalFrame(aboutSwitcher, 
  101.         LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  102.     FXString credits    = fbAboutCreditsText;
  103.     FXText* creditsText = new FXText(CreditsFrame,this,ID_CREDITS_TEXT,
  104.         LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|TEXT_READONLY|TEXT_WORDWRAP);
  105.     creditsText->setFont(textFont);
  106.     creditsText->setText(credits);
  107.     creditsText->setBackColor(getApp()->getBaseColor());
  108.     
  109.     // Place the license message in the third tab
  110.     FXVerticalFrame* LicenseFrame = new FXVerticalFrame(aboutSwitcher, 
  111.         LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  112.     FXString license    = fbAboutLicenseText;
  113.     FXText* licenseText = new FXText(LicenseFrame,this,ID_LICENSE_TEXT,
  114.         LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|TEXT_READONLY|TEXT_WORDWRAP);
  115.     licenseText->setFont(fixedFont);
  116.     licenseText->setText(license);
  117.     licenseText->setBackColor(getApp()->getBaseColor());
  118.     
  119.     // Place the programs message in the fourth tab
  120.     FXVerticalFrame* ProgramsFrame = new FXVerticalFrame(aboutSwitcher, 
  121.         LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  122.     FXString programs    = fbAboutProgramsText;
  123.     FXText* programsText = new FXText(ProgramsFrame,this,ID_PROGRAMS_TEXT,
  124.         LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|TEXT_READONLY|TEXT_WORDWRAP);
  125.     programsText->setFont(textFont);
  126.     programsText->setText(programs);
  127.     programsText->setBackColor(getApp()->getBaseColor());
  128.     
  129.     // Place the GPL message in the fifth tab
  130.     FXVerticalFrame* GPLFrame = new FXVerticalFrame(aboutSwitcher, 
  131.         LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  132.     FXString GPL    = fbAboutGPLText;
  133.     FXText* GPLText = new FXText(GPLFrame,this,ID_GPL_TEXT,
  134.         LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|TEXT_READONLY|TEXT_WORDWRAP);
  135.     GPLText->setFont(fixedFont);
  136.     GPLText->setText(GPL);
  137.     GPLText->setBackColor(getApp()->getBaseColor());
  138.     
  139.     // Place the LGPL message in the fifth tab
  140.     FXVerticalFrame* LGPLFrame = new FXVerticalFrame(aboutSwitcher, 
  141.         LAYOUT_FILL_X|LAYOUT_FILL_Y|JUSTIFY_LEFT|JUSTIFY_TOP);
  142.     FXString LGPL     = fbAboutLGPLText;
  143.     FXText*  LGPLText = new FXText(LGPLFrame,this,ID_LGPL_TEXT,
  144.         LAYOUT_FILL_X|LAYOUT_FILL_Y|LAYOUT_LEFT|TEXT_READONLY|TEXT_WORDWRAP);
  145.     LGPLText->setFont(fixedFont);
  146.     LGPLText->setText(LGPL);
  147.     LGPLText->setBackColor(getApp()->getBaseColor());
  148.     
  149.     // Button frame for the switcher buttons
  150.     FXHorizontalFrame* switcherButtonFrame = new FXHorizontalFrame(ContentFrame,LAYOUT_FILL_X|PACK_UNIFORM_WIDTH);
  151.     
  152.     // Add buttons to handle the switcher items
  153.     new FXButton(switcherButtonFrame, fbAboutTabText, NULL, aboutSwitcher,
  154.         FXSwitcher::ID_OPEN_FIRST,  LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  155.     new FXButton(switcherButtonFrame, fbAboutCreditsTabText, NULL, aboutSwitcher,
  156.         FXSwitcher::ID_OPEN_SECOND, LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  157.     new FXButton(switcherButtonFrame, fbAboutLicenseTabText, NULL, aboutSwitcher,
  158.         FXSwitcher::ID_OPEN_THIRD,  LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  159.     new FXButton(switcherButtonFrame, fbAboutProgramsTabText, NULL, aboutSwitcher,
  160.         FXSwitcher::ID_OPEN_FOURTH, LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  161.     new FXButton(switcherButtonFrame, fbAboutGPLTabText, NULL, aboutSwitcher,
  162.         FXSwitcher::ID_OPEN_FIFTH,  LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  163.     new FXButton(switcherButtonFrame, fbAboutLGPLTabText, NULL, aboutSwitcher,
  164.         FXSwitcher::ID_OPEN_SIXTH,  LAYOUT_FILL_X|LAYOUT_CENTER_X|FRAME_RAISED|FRAME_THICK);
  165.     
  166.     // Add a separator line
  167.     new FXHorizontalSeparator(ContentFrame);
  168.     
  169.     // Bottom part
  170.     FXHorizontalFrame* ButtonFrame = new FXHorizontalFrame(ContentFrame, 
  171.         LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH);
  172.     new FXButton(ButtonFrame, fbAboutOkButtonText, NULL, this, FXDialogBox::ID_ACCEPT,
  173.         BUTTON_DEFAULT|LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK, 0, 0, 0, 0, 20, 20, 5, 5);
  174. }
  175. // Clean up (we can't delete the stuff we created
  176. // for the tab book, though)
  177. CFreeburnAbout::~CFreeburnAbout()
  178. {
  179.     delete m_DialogIcon;
  180. }