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

DVD

开发平台:

Visual C++

  1. /* This is the class definition for the Disc Image 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 "FreeburnDiscImageDialog.h"
  68. #include "FreeburnDefs.h"
  69. #include "FreeburnDiscImageDialogText.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(CFreeburnDiscImageDialog) CFreeburnDiscImageDialogMap[]={
  76.     //________Message_Type_________________________ID___________________________________Message_Handler___________
  77.     FXMAPFUNC(SEL_COMMAND, CFreeburnDiscImageDialog::ID_COMMAND_FIELD, CFreeburnDiscImageDialog::onCmdCommandField)
  78. };
  79. FXIMPLEMENT(CFreeburnDiscImageDialog,FXDialogBox,CFreeburnDiscImageDialogMap,ARRAYNUMBER(CFreeburnDiscImageDialogMap))
  80. // Construct help dialog box
  81. CFreeburnDiscImageDialog::CFreeburnDiscImageDialog(FXWindow* owner):
  82.   FXDialogBox(owner,fbDiscImageDialogTitleText,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* imageDiscFrame = new FXVerticalFrame(this, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y);
  86.     
  87.     // add the title label
  88.     new FXLabel(imageDiscFrame, fbDiscImageDialogTitleLabelText, NULL, LAYOUT_LEFT);
  89.     
  90.     // add a horizontal ridge separator
  91.     new FXHorizontalSeparator(imageDiscFrame, SEPARATOR_RIDGE|LAYOUT_FILL_X);
  92.     // set up a label specifying that we're going to run mkisofs, as well as
  93.     // a button to open the mkisofs online man page for extra help
  94.     FXMatrix* imageProgramMatrix = new FXMatrix(imageDiscFrame, 2, MATRIX_BY_COLUMNS|PACK_UNIFORM_HEIGHT|LAYOUT_FILL_X);
  95.     // this is a radio button for specifying TAO recording with cdrecord
  96.     new FXLabel(imageProgramMatrix, fbDiscImageDialogMkisofsText, NULL,
  97.         LAYOUT_CENTER_Y|LAYOUT_FILL_COLUMN|ICON_BEFORE_TEXT);
  98.     // this adds a button that will show the mkisofs man page
  99.     m_MkisofsHelp = new FXButton(imageProgramMatrix, fbDiscImageDialogMkisofsHelpButtonText, NULL, owner, 
  100.         CFreeBurn::ID_HELP_MKISOFS, BUTTON_NORMAL);
  101.         
  102.     // now add a check button that will allow an option to run the command through a UNIX shell
  103.     m_commandFlag = new FXCheckButton(imageDiscFrame, fbDiscImageDialogUseUnixShellText, this, ID_LAST,
  104.         ICON_BEFORE_TEXT|LAYOUT_LEFT);
  105.         
  106.     // horizontal line to separate the sections
  107.     new FXHorizontalSeparator(imageDiscFrame, SEPARATOR_LINE|LAYOUT_FILL_X);
  108.     
  109.     // Label identifying the text field to specify command line options
  110.     new FXLabel(imageDiscFrame, fbDiscImageDialogCommandLineOptsText, NULL, LAYOUT_LEFT);
  111.     // The text field to specify the command line options
  112.     m_commandField = new FXTextField(imageDiscFrame, 50, this, ID_COMMAND_FIELD, 
  113.         TEXTFIELD_ENTER_ONLY|FRAME_SUNKEN|FRAME_THICK|LAYOUT_LEFT);
  114.     
  115.     // set up the buttons for canceling or accepting changes
  116.     new FXHorizontalSeparator(imageDiscFrame, SEPARATOR_GROOVE|LAYOUT_FILL_X);
  117.     FXHorizontalFrame* buttonFrame = new FXHorizontalFrame(imageDiscFrame, LAYOUT_BOTTOM|LAYOUT_FILL_X|PACK_UNIFORM_WIDTH);
  118.     new FXButton(buttonFrame, fbDiscImageDialogOkButtonText,     NULL, this, FXDialogBox::ID_ACCEPT,
  119.         BUTTON_DEFAULT|LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK, 0, 0, 0, 0, 20, 20);
  120.     new FXButton(buttonFrame, fbDiscImageDialogCancelButtonText, NULL, this, FXDialogBox::ID_CANCEL,
  121.         LAYOUT_RIGHT|FRAME_RAISED|FRAME_THICK,                0, 0, 0, 0, 20, 20);  
  122. }
  123. // Clean up 
  124. CFreeburnDiscImageDialog::~CFreeburnDiscImageDialog()
  125. {
  126. }
  127. // Set the icon for the help button(s) in the dialog
  128. void CFreeburnDiscImageDialog::setHelpIcon(FXIcon* helpIcon)
  129. {
  130.     m_MkisofsHelp->setIcon(helpIcon);
  131. }
  132. // set the use unix shell flag
  133. void CFreeburnDiscImageDialog::setShellFlag(FXbool flag)
  134. {
  135.     m_commandFlag->setCheck(flag);
  136. }
  137. // get the use unix shell flag
  138. FXbool CFreeburnDiscImageDialog::getShellFlag()
  139. {
  140.     return m_commandFlag->getCheck();
  141. }
  142. // get the command line string
  143. void CFreeburnDiscImageDialog::setCommandString(FXString string)
  144. {
  145.     m_commandField->setText(string);
  146. }
  147. // set the command line string
  148. FXString CFreeburnDiscImageDialog::getCommandString()
  149. {
  150.     return m_commandField->getText();
  151. }
  152. long CFreeburnDiscImageDialog::onCmdCommandField(FXObject* sender, FXSelector sel, void* ptr)
  153. {
  154.     // on an accept from the text area (enter on the keyboard), close the dialog
  155.     FXDialogBox::onCmdAccept(sender, sel, ptr);
  156.     
  157.     return 1;
  158. }