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

DVD

开发平台:

Visual C++

  1. /* This is the class definition for the Burn Disc 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 "FreeburnBurnDiscDialog.h"
  68. #include "FreeburnDefs.h"
  69. #include "FreeburnBurnDiscDialogText.h"
  70. #ifndef FREEBURN_ICONS_H
  71. #include "FreeburnIcons.h"
  72. #define FREEBURN_ICONS_H
  73. #endif
  74. // Message Map for this class
  75. FXDEFMAP(CFreeburnBurnDiscDialog) CFreeburnBurnDiscDialogMap[]={
  76.     //________Message_Type________________________ID_________________________________Message_Handler___________
  77.     FXMAPFUNC(SEL_COMMAND, CFreeburnBurnDiscDialog::ID_COMMAND_FIELD, CFreeburnBurnDiscDialog::onCmdCommandField)
  78. };
  79. FXIMPLEMENT(CFreeburnBurnDiscDialog,FXDialogBox,CFreeburnBurnDiscDialogMap,ARRAYNUMBER(CFreeburnBurnDiscDialogMap))
  80. // Construct help dialog box
  81. CFreeburnBurnDiscDialog::CFreeburnBurnDiscDialog(FXWindow* owner, FXDataTarget* burnTypeTarget):
  82.   FXDialogBox(owner,fbBurnDiscDialogTitleText,DECOR_TITLE|DECOR_BORDER, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4)
  83. {
  84.     // set up the main container for the dialog
  85.     FXVerticalFrame* burnDiscFrame = new FXVerticalFrame(this, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y);
  86.     
  87.     // add the title label
  88.     new FXLabel(burnDiscFrame, fbBurnDiscDialogTitleLabelText, NULL, LAYOUT_LEFT);
  89.     
  90.     // add a horizontal ridge separator
  91.     new FXHorizontalSeparator(burnDiscFrame, SEPARATOR_RIDGE|LAYOUT_FILL_X);
  92.     // set up the radio buttons to specify using TAO recording with cdrecord
  93.     // or DAO recording with cdrdao, as well as buttons to launch thier man pages
  94.     // First, set up a matrix to hold them
  95.     FXMatrix* burnProgramMatrix = new FXMatrix(burnDiscFrame, 2, MATRIX_BY_ROWS|PACK_UNIFORM_HEIGHT|LAYOUT_FILL_X);
  96.     // this is a radio button for specifying TAO recording with cdrecord
  97.     new FXRadioButton(burnProgramMatrix, fbBurnDiscDialogTaoBurnText, burnTypeTarget, FXDataTarget::ID_OPTION+CFreeBurn::TRACK_AT_ONCE,
  98.         LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|ICON_BEFORE_TEXT);
  99.     // this is a radio button for specifying DAO recording with cdrdao
  100.     new FXRadioButton(burnProgramMatrix, fbBurnDiscDialogDaoBurnText, burnTypeTarget, FXDataTarget::ID_OPTION+CFreeBurn::DISC_AT_ONCE,
  101.         LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|ICON_BEFORE_TEXT);
  102.     // this adds a button that will show the cdrecord man page
  103.     m_CdrecordHelp = new FXButton(burnProgramMatrix, fbBurnDiscDialogCdrecordHelpButtonText, NULL, owner, 
  104.         CFreeBurn::ID_HELP_CDRECORD, BUTTON_NORMAL);
  105.     // this adds a button that will show the cdrdao man page
  106.     m_CdrdaoHelp   = new FXButton(burnProgramMatrix, fbBurnDiscDialogCdrdaoHelpButtonText,   NULL, owner, 
  107.         CFreeBurn::ID_HELP_CDRDAO,   BUTTON_NORMAL);
  108.         
  109.     // now add a check button that will allow an option to run the command through a UNIX shell
  110.     m_commandFlag = new FXCheckButton(burnDiscFrame, fbBurnDiscDialogUseUnixShellText, this, ID_LAST,
  111.         ICON_BEFORE_TEXT|LAYOUT_LEFT);
  112.         
  113.     // horizontal line to separate the sections
  114.     new FXHorizontalSeparator(burnDiscFrame, SEPARATOR_LINE|LAYOUT_FILL_X);
  115.     
  116.     // Label identifying the text field to specify command line options
  117.     new FXLabel(burnDiscFrame, fbBurnDiscDialogCommandLineOptsText, NULL, LAYOUT_LEFT);
  118.     // The text field to specify the command line options
  119.     m_commandField = new FXTextField(burnDiscFrame, 50, this, ID_COMMAND_FIELD, 
  120.         TEXTFIELD_ENTER_ONLY|FRAME_SUNKEN|FRAME_THICK|LAYOUT_LEFT);
  121.     
  122.     // set up the buttons for canceling or accepting changes
  123.     new FXHorizontalSeparator(burnDiscFrame, SEPARATOR_GROOVE|LAYOUT_FILL_X);
  124.     FXHorizontalFrame* buttonFrame = new FXHorizontalFrame(burnDiscFrame, LAYOUT_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH);
  125.     new FXButton(buttonFrame, fbBurnDiscDialogOkButtonText,     NULL, this, FXDialogBox::ID_ACCEPT,
  126.         BUTTON_DEFAULT|LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK, 0, 0, 0, 0, 20, 20);
  127.     new FXButton(buttonFrame, fbBurnDiscDialogCancelButtonText, NULL, this, FXDialogBox::ID_CANCEL,
  128.         LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK,                0, 0, 0, 0, 20, 20);  
  129. }
  130. // Clean up 
  131. CFreeburnBurnDiscDialog::~CFreeburnBurnDiscDialog()
  132. {
  133. }
  134. // set the icons for the help buttons
  135. void CFreeburnBurnDiscDialog::setHelpIcon(FXIcon* helpIcon)
  136. {
  137.     m_CdrecordHelp->setIcon(helpIcon);
  138.     m_CdrdaoHelp->setIcon(helpIcon);
  139. }
  140. // set the use unix shell flag
  141. void CFreeburnBurnDiscDialog::setShellFlag(FXbool flag)
  142. {
  143.     m_commandFlag->setCheck(flag);
  144. }
  145. // get the use unix shell flag
  146. FXbool CFreeburnBurnDiscDialog::getShellFlag()
  147. {
  148.     return m_commandFlag->getCheck();
  149. }
  150. // set the command line string
  151. void CFreeburnBurnDiscDialog::setCommandString(FXString string)
  152. {
  153.     m_commandField->setText(string);
  154. }
  155. // get the command line string
  156. FXString CFreeburnBurnDiscDialog::getCommandString()
  157. {
  158.     return m_commandField->getText();
  159. }
  160. long CFreeburnBurnDiscDialog::onCmdCommandField(FXObject* sender, FXSelector sel, void* ptr)
  161. {
  162.     // on an accept from the text area (enter on the keyboard), close the dialog
  163.     FXDialogBox::onCmdAccept(sender, sel, ptr);
  164.     
  165.     return 1;
  166. }