Changeset 59 in projects for punch-card-project


Ignore:
Timestamp:
Jan 22, 2010, 7:44:34 PM (14 years ago)
Author:
sven-win
Message:

Umfangreiche Weiterentwicklung (letzte Entwicklung am Netbook). Driver fuer M200 erstmals testweise implementiert; funktioniert(e mit Netbook).

-- Sven @ netboo

Location:
punch-card-project/trunk
Files:
6 added
22 edited

Legend:

Unmodified
Added
Removed
  • punch-card-project/trunk/protocols/documation-m200/pc-uc-protocol.h

    r55 r59  
    8888#define M200_SERVER_BINARY_PREFIX    "8"
    8989#define M200_SERVER_BINARY           "800"
     90#define M200_SERVER_BINARY_FINISHED  "808"
    9091
    9192#define M200_SERVER_FATAL_PREFIX      "9"
  • punch-card-project/trunk/protocols/documation-m200/protocol.htm

    r55 r59  
    1414  <h1>PC Documation M200 &mu;C Serial Communication Protocol</h1>
    1515  <i>Punched Paper Project &ndash; December 2009</i>
    16   <br>Author: Sven K&ouml;ppel &ndash; <i>$id$</i>
     16  <br>Author: Sven K&ouml;ppel &ndash; <i>$Id$</i>
    1717 </div>
    1818 
     
    201201</ul>
    202202
    203 <p>The only real world data format is the binary format, named after the inventor, <a href="http://www.cs.uiowa.edu/~jones/cards/">Douglas Jones</a>.
    204 See APPENDIX A for details how to model one card. We are using this fully featured syntax, so one card expands to exactly 123 bytes.</p>
    205    
    206 
     203<p>The only real world data format is the binary format, named after the inventor,
     204<a href="http://www.cs.uiowa.edu/~jones/cards/">Douglas Jones</a>.
     205He proposed a format for complete card decks, as excepted in APPENDIX A. We do <b>not</b>
     206use the fully featured syntax (which defines some bytes as meta data) but only the basic
     207idea of encoding an 80 columns punch card to exactly 120 octetts. So a typical card data
     208transportation following this protocol will look like:</p>
     209
     210<pre>
     211    800 BINARY DATA\r\n.........................................808 FINISHED\r\n
     212                           ^         120 bytes payload             |
     213             start of data exactly at caret, end after 120 bytes
     214</pre>
     215
     216<p>This is an example for the first six bytes in the payload:</p>
     217
     218<pre>
     219         column 1                column 2                column 3                 column 4
     220|_ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _|
     221|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
     222|               |               |               |               |               |               |
     223      byte 1          byte 2          byte 3         byte 4          byte 5          byte 6
     224</pre>
     225
     226<p>For the exact decoding of one column (three nibbles) see APPENDIX A.</p>
    207227
    208228<h2>APPENDIX A: Binary Punch Card Representation (Douglas Jones)</h2>
  • punch-card-project/trunk/punch-card-editor/src/Makefile

    r58 r59  
    11#############################################################################
    2 # Makefile for building: ../bin/src
    3 # Generated by qmake (2.01a) (Qt 4.5.1) on: Fr. Jan 1 19:42:19 2010
     2# Makefile for building: src
     3# Generated by qmake (2.01a) (Qt 4.6.0) on: Sa 9. Jan 12:15:24 2010
    44# Project:  src.pro
    55# Template: app
    6 # Command: /usr/bin/qmake -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile src.pro
     6# Command: c:\qt\2009.05\qt\bin\qmake.exe -spec c:/Qt/2009.05/qt/mkspecs/win32-g++ -win32 -o Makefile src.pro
    77#############################################################################
    88
    9 ####### Compiler, tools and options
     9first: debug
     10install: debug-install
     11uninstall: debug-uninstall
     12MAKEFILE      = Makefile
     13QMAKE         = c:/qt/2009.05/qt/bin/qmake.exe
     14DEL_FILE      = rm
     15CHK_DIR_EXISTS= test -d
     16MKDIR         = mkdir
     17COPY          = cp
     18COPY_FILE     = $(COPY)
     19COPY_DIR      = xcopy /s /q /y /i
     20INSTALL_FILE  = $(COPY_FILE)
     21INSTALL_PROGRAM = $(COPY_FILE)
     22INSTALL_DIR   = $(COPY_DIR)
     23DEL_FILE      = rm
     24SYMLINK       =
     25DEL_DIR       = rmdir
     26MOVE          = mv
     27CHK_DIR_EXISTS= test -d
     28MKDIR         = mkdir
     29SUBTARGETS    =  \
     30                debug \
     31                release
    1032
    11 CC            = gcc
    12 CXX           = g++
    13 DEFINES       = -D_TTY_POSIX_ -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
    14 CFLAGS        = -pipe -g -w -D_REENTRANT $(DEFINES)
    15 CXXFLAGS      = -pipe -g -w -D_REENTRANT $(DEFINES)
    16 INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I../bin/moc -I.
    17 LINK          = g++
    18 LFLAGS        =
    19 LIBS          = $(SUBLIBS)  -L/usr/lib/qt4 -lQtGui -L/usr/lib/qt4 -L/usr/X11R6/lib -pthread -lpng -lfreetype -lgobject-2.0 -lSM -lICE -pthread -pthread -lXrender -lXrandr -lXinerama -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
    20 AR            = ar cqs
    21 RANLIB        =
    22 QMAKE         = /usr/bin/qmake
    23 TAR           = tar -cf
    24 COMPRESS      = gzip -9f
    25 COPY          = cp -f
    26 SED           = sed
    27 COPY_FILE     = $(COPY)
    28 COPY_DIR      = $(COPY) -r
    29 INSTALL_FILE  = install -m 644 -p
    30 INSTALL_DIR   = $(COPY_DIR)
    31 INSTALL_PROGRAM = install -m 755 -p
    32 DEL_FILE      = rm -f
    33 SYMLINK       = ln -sf
    34 DEL_DIR       = rmdir
    35 MOVE          = mv -f
    36 CHK_DIR_EXISTS= test -d
    37 MKDIR         = mkdir -p
     33debug: $(MAKEFILE).Debug FORCE
     34        $(MAKE) -f $(MAKEFILE).Debug
     35debug-make_default: $(MAKEFILE).Debug FORCE
     36        $(MAKE) -f $(MAKEFILE).Debug
     37debug-make_first: $(MAKEFILE).Debug FORCE
     38        $(MAKE) -f $(MAKEFILE).Debug first
     39debug-all: $(MAKEFILE).Debug FORCE
     40        $(MAKE) -f $(MAKEFILE).Debug all
     41debug-clean: $(MAKEFILE).Debug FORCE
     42        $(MAKE) -f $(MAKEFILE).Debug clean
     43debug-distclean: $(MAKEFILE).Debug FORCE
     44        $(MAKE) -f $(MAKEFILE).Debug distclean
     45debug-install: $(MAKEFILE).Debug FORCE
     46        $(MAKE) -f $(MAKEFILE).Debug install
     47debug-uninstall: $(MAKEFILE).Debug FORCE
     48        $(MAKE) -f $(MAKEFILE).Debug uninstall
     49release: $(MAKEFILE).Release FORCE
     50        $(MAKE) -f $(MAKEFILE).Release
     51release-make_default: $(MAKEFILE).Release FORCE
     52        $(MAKE) -f $(MAKEFILE).Release
     53release-make_first: $(MAKEFILE).Release FORCE
     54        $(MAKE) -f $(MAKEFILE).Release first
     55release-all: $(MAKEFILE).Release FORCE
     56        $(MAKE) -f $(MAKEFILE).Release all
     57release-clean: $(MAKEFILE).Release FORCE
     58        $(MAKE) -f $(MAKEFILE).Release clean
     59release-distclean: $(MAKEFILE).Release FORCE
     60        $(MAKE) -f $(MAKEFILE).Release distclean
     61release-install: $(MAKEFILE).Release FORCE
     62        $(MAKE) -f $(MAKEFILE).Release install
     63release-uninstall: $(MAKEFILE).Release FORCE
     64        $(MAKE) -f $(MAKEFILE).Release uninstall
    3865
    39 ####### Output directory
    40 
    41 OBJECTS_DIR   = ../bin/obj/
    42 
    43 ####### Files
    44 
    45 SOURCES       = app/main.cc \
    46                 app/mainwindow.cc \
    47                 app/mainwindow.ui.cc \
    48                 deckviewer/cardeditor.cc \
    49                 deckviewer/navigatordock.cc \
    50                 deckviewer/navigatormodel.cc \
    51                 deckviewer/navigatorview.cc \
    52                 qpunchcard/card.cc \
    53                 qpunchcard/deck.cc \
    54                 qpunchcard/format.cc \
    55                 qpunchcard/widget.cc \
    56                 text/codec.cc \
    57                 text/editor.cc \
    58                 text/editordock.cc \
    59                 driver/driver.cc \
    60                 libs/qextserialport/qextserialbase.cpp \
    61                 libs/qextserialport/qextserialport.cpp \
    62                 libs/qextserialport/posix_qextserialport.cpp \
    63                 driver/documation-m200-client/controller.cc ../bin/moc/moc_mainwindow.cpp \
    64                 ../bin/moc/moc_cardeditor.cpp \
    65                 ../bin/moc/moc_navigatordock.cpp \
    66                 ../bin/moc/moc_navigatormodel.cpp \
    67                 ../bin/moc/moc_navigatorview.cpp \
    68                 ../bin/moc/moc_deck.cpp \
    69                 ../bin/moc/moc_widget.cpp \
    70                 ../bin/moc/moc_editor.cpp \
    71                 ../bin/moc/moc_editordock.cpp \
    72                 ../bin/moc/moc_driver.cpp \
    73                 ../bin/moc/moc_controller.cpp \
    74                 qrc_icons.cpp
    75 OBJECTS       = ../bin/obj/main.o \
    76                 ../bin/obj/mainwindow.o \
    77                 ../bin/obj/mainwindow.ui.o \
    78                 ../bin/obj/cardeditor.o \
    79                 ../bin/obj/navigatordock.o \
    80                 ../bin/obj/navigatormodel.o \
    81                 ../bin/obj/navigatorview.o \
    82                 ../bin/obj/card.o \
    83                 ../bin/obj/deck.o \
    84                 ../bin/obj/format.o \
    85                 ../bin/obj/widget.o \
    86                 ../bin/obj/codec.o \
    87                 ../bin/obj/editor.o \
    88                 ../bin/obj/editordock.o \
    89                 ../bin/obj/driver.o \
    90                 ../bin/obj/qextserialbase.o \
    91                 ../bin/obj/qextserialport.o \
    92                 ../bin/obj/posix_qextserialport.o \
    93                 ../bin/obj/controller.o \
    94                 ../bin/obj/moc_mainwindow.o \
    95                 ../bin/obj/moc_cardeditor.o \
    96                 ../bin/obj/moc_navigatordock.o \
    97                 ../bin/obj/moc_navigatormodel.o \
    98                 ../bin/obj/moc_navigatorview.o \
    99                 ../bin/obj/moc_deck.o \
    100                 ../bin/obj/moc_widget.o \
    101                 ../bin/obj/moc_editor.o \
    102                 ../bin/obj/moc_editordock.o \
    103                 ../bin/obj/moc_driver.o \
    104                 ../bin/obj/moc_controller.o \
    105                 ../bin/obj/qrc_icons.o
    106 DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
    107                 /usr/share/qt4/mkspecs/common/unix.conf \
    108                 /usr/share/qt4/mkspecs/common/linux.conf \
    109                 /usr/share/qt4/mkspecs/qconfig.pri \
    110                 /usr/share/qt4/mkspecs/features/qt_functions.prf \
    111                 /usr/share/qt4/mkspecs/features/qt_config.prf \
    112                 /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
    113                 /usr/share/qt4/mkspecs/features/default_pre.prf \
     66Makefile: src.pro  c:/Qt/2009.05/qt/mkspecs/win32-g++/qmake.conf c:/Qt/2009.05/qt/mkspecs/qconfig.pri \
     67                c:/Qt/2009.05/qt/mkspecs/features/qt_functions.prf \
     68                c:/Qt/2009.05/qt/mkspecs/features/qt_config.prf \
     69                c:/Qt/2009.05/qt/mkspecs/features/exclusive_builds.prf \
     70                c:/Qt/2009.05/qt/mkspecs/features/default_pre.prf \
     71                c:/Qt/2009.05/qt/mkspecs/features/win32/default_pre.prf \
    11472                libs/qextserialport.pri \
    11573                driver/documation-m200-client.pri \
    116                 /usr/share/qt4/mkspecs/features/debug.prf \
    117                 /usr/share/qt4/mkspecs/features/default_post.prf \
    118                 /usr/share/qt4/mkspecs/features/warn_off.prf \
    119                 /usr/share/qt4/mkspecs/features/qt.prf \
    120                 /usr/share/qt4/mkspecs/features/unix/thread.prf \
    121                 /usr/share/qt4/mkspecs/features/moc.prf \
    122                 /usr/share/qt4/mkspecs/features/resources.prf \
    123                 /usr/share/qt4/mkspecs/features/uic.prf \
    124                 /usr/share/qt4/mkspecs/features/yacc.prf \
    125                 /usr/share/qt4/mkspecs/features/lex.prf \
    126                 /usr/share/qt4/mkspecs/features/include_source_dir.prf \
    127                 src.pro
    128 QMAKE_TARGET  = src
    129 DESTDIR       = ../bin/
    130 TARGET        = ../bin/src
    131 
    132 first: all
    133 ####### Implicit rules
    134 
    135 .SUFFIXES: .o .c .cpp .cc .cxx .C
    136 
    137 .cpp.o:
    138         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
    139 
    140 .cc.o:
    141         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
    142 
    143 .cxx.o:
    144         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
    145 
    146 .C.o:
    147         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
    148 
    149 .c.o:
    150         $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
    151 
    152 ####### Build rules
    153 
    154 all: Makefile $(TARGET)
    155 
    156 $(TARGET):  $(OBJECTS) 
    157         @$(CHK_DIR_EXISTS) ../bin/ || $(MKDIR) ../bin/
    158         $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
    159 
    160 Makefile: src.pro  /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
    161                 /usr/share/qt4/mkspecs/common/unix.conf \
    162                 /usr/share/qt4/mkspecs/common/linux.conf \
    163                 /usr/share/qt4/mkspecs/qconfig.pri \
    164                 /usr/share/qt4/mkspecs/features/qt_functions.prf \
    165                 /usr/share/qt4/mkspecs/features/qt_config.prf \
    166                 /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
    167                 /usr/share/qt4/mkspecs/features/default_pre.prf \
    168                 libs/qextserialport.pri \
    169                 driver/documation-m200-client.pri \
    170                 /usr/share/qt4/mkspecs/features/debug.prf \
    171                 /usr/share/qt4/mkspecs/features/default_post.prf \
    172                 /usr/share/qt4/mkspecs/features/warn_off.prf \
    173                 /usr/share/qt4/mkspecs/features/qt.prf \
    174                 /usr/share/qt4/mkspecs/features/unix/thread.prf \
    175                 /usr/share/qt4/mkspecs/features/moc.prf \
    176                 /usr/share/qt4/mkspecs/features/resources.prf \
    177                 /usr/share/qt4/mkspecs/features/uic.prf \
    178                 /usr/share/qt4/mkspecs/features/yacc.prf \
    179                 /usr/share/qt4/mkspecs/features/lex.prf \
    180                 /usr/share/qt4/mkspecs/features/include_source_dir.prf \
    181                 /usr/lib/qt4/libQtGui.prl \
    182                 /usr/lib/qt4/libQtCore.prl
    183         $(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile src.pro
    184 /usr/share/qt4/mkspecs/common/g++.conf:
    185 /usr/share/qt4/mkspecs/common/unix.conf:
    186 /usr/share/qt4/mkspecs/common/linux.conf:
    187 /usr/share/qt4/mkspecs/qconfig.pri:
    188 /usr/share/qt4/mkspecs/features/qt_functions.prf:
    189 /usr/share/qt4/mkspecs/features/qt_config.prf:
    190 /usr/share/qt4/mkspecs/features/exclusive_builds.prf:
    191 /usr/share/qt4/mkspecs/features/default_pre.prf:
     74                c:/Qt/2009.05/qt/mkspecs/features/debug.prf \
     75                c:/Qt/2009.05/qt/mkspecs/features/debug_and_release.prf \
     76                c:/Qt/2009.05/qt/mkspecs/features/default_post.prf \
     77                c:/Qt/2009.05/qt/mkspecs/features/win32/default_post.prf \
     78                c:/Qt/2009.05/qt/mkspecs/features/warn_off.prf \
     79                c:/Qt/2009.05/qt/mkspecs/features/win32/rtti.prf \
     80                c:/Qt/2009.05/qt/mkspecs/features/win32/exceptions.prf \
     81                c:/Qt/2009.05/qt/mkspecs/features/win32/stl.prf \
     82                c:/Qt/2009.05/qt/mkspecs/features/shared.prf \
     83                c:/Qt/2009.05/qt/mkspecs/features/qt.prf \
     84                c:/Qt/2009.05/qt/mkspecs/features/win32/thread.prf \
     85                c:/Qt/2009.05/qt/mkspecs/features/moc.prf \
     86                c:/Qt/2009.05/qt/mkspecs/features/win32/windows.prf \
     87                c:/Qt/2009.05/qt/mkspecs/features/resources.prf \
     88                c:/Qt/2009.05/qt/mkspecs/features/uic.prf \
     89                c:/Qt/2009.05/qt/mkspecs/features/yacc.prf \
     90                c:/Qt/2009.05/qt/mkspecs/features/lex.prf \
     91                c:/Qt/2009.05/qt/mkspecs/features/include_source_dir.prf \
     92                c:/Qt/2009.05/qt/lib/qtmaind.prl
     93        $(QMAKE) -spec c:/Qt/2009.05/qt/mkspecs/win32-g++ -win32 -o Makefile src.pro
     94c:/Qt/2009.05/qt/mkspecs/qconfig.pri:
     95c:/Qt/2009.05/qt/mkspecs/features/qt_functions.prf:
     96c:/Qt/2009.05/qt/mkspecs/features/qt_config.prf:
     97c:/Qt/2009.05/qt/mkspecs/features/exclusive_builds.prf:
     98c:/Qt/2009.05/qt/mkspecs/features/default_pre.prf:
     99c:/Qt/2009.05/qt/mkspecs/features/win32/default_pre.prf:
    192100libs/qextserialport.pri:
    193101driver/documation-m200-client.pri:
    194 /usr/share/qt4/mkspecs/features/debug.prf:
    195 /usr/share/qt4/mkspecs/features/default_post.prf:
    196 /usr/share/qt4/mkspecs/features/warn_off.prf:
    197 /usr/share/qt4/mkspecs/features/qt.prf:
    198 /usr/share/qt4/mkspecs/features/unix/thread.prf:
    199 /usr/share/qt4/mkspecs/features/moc.prf:
    200 /usr/share/qt4/mkspecs/features/resources.prf:
    201 /usr/share/qt4/mkspecs/features/uic.prf:
    202 /usr/share/qt4/mkspecs/features/yacc.prf:
    203 /usr/share/qt4/mkspecs/features/lex.prf:
    204 /usr/share/qt4/mkspecs/features/include_source_dir.prf:
    205 /usr/lib/qt4/libQtGui.prl:
    206 /usr/lib/qt4/libQtCore.prl:
    207 qmake:  FORCE
    208         @$(QMAKE) -spec /usr/share/qt4/mkspecs/linux-g++ -unix CONFIG+=debug -o Makefile src.pro
     102c:/Qt/2009.05/qt/mkspecs/features/debug.prf:
     103c:/Qt/2009.05/qt/mkspecs/features/debug_and_release.prf:
     104c:/Qt/2009.05/qt/mkspecs/features/default_post.prf:
     105c:/Qt/2009.05/qt/mkspecs/features/win32/default_post.prf:
     106c:/Qt/2009.05/qt/mkspecs/features/warn_off.prf:
     107c:/Qt/2009.05/qt/mkspecs/features/win32/rtti.prf:
     108c:/Qt/2009.05/qt/mkspecs/features/win32/exceptions.prf:
     109c:/Qt/2009.05/qt/mkspecs/features/win32/stl.prf:
     110c:/Qt/2009.05/qt/mkspecs/features/shared.prf:
     111c:/Qt/2009.05/qt/mkspecs/features/qt.prf:
     112c:/Qt/2009.05/qt/mkspecs/features/win32/thread.prf:
     113c:/Qt/2009.05/qt/mkspecs/features/moc.prf:
     114c:/Qt/2009.05/qt/mkspecs/features/win32/windows.prf:
     115c:/Qt/2009.05/qt/mkspecs/features/resources.prf:
     116c:/Qt/2009.05/qt/mkspecs/features/uic.prf:
     117c:/Qt/2009.05/qt/mkspecs/features/yacc.prf:
     118c:/Qt/2009.05/qt/mkspecs/features/lex.prf:
     119c:/Qt/2009.05/qt/mkspecs/features/include_source_dir.prf:
     120c:\Qt\2009.05\qt\lib\qtmaind.prl:
     121qmake: qmake_all FORCE
     122        @$(QMAKE) -spec c:/Qt/2009.05/qt/mkspecs/win32-g++ -win32 -o Makefile src.pro
    209123
    210 dist:
    211         @$(CHK_DIR_EXISTS) ../bin/obj/src1.0.0 || $(MKDIR) ../bin/obj/src1.0.0
    212         $(COPY_FILE) --parents $(SOURCES) $(DIST) ../bin/obj/src1.0.0/ && $(COPY_FILE) --parents app/mainwindow.h deckviewer/cardeditor.h deckviewer/navigatordock.h deckviewer/navigatormodel.h deckviewer/navigatorview.h qpunchcard/card.h qpunchcard/deck.h qpunchcard/format.h qpunchcard/widget.h text/cardcodes.h text/codec.h text/editor.h text/editordock.h driver/driver.h libs/qextserialport/qextserialbase.h libs/qextserialport/qextserialport.h libs/qextserialport/posix_qextserialport.h driver/documation-m200-client/controller.h ../../protocols/documation-m200/pc-uc-protocol.h ../bin/obj/src1.0.0/ && $(COPY_FILE) --parents ../shared/icons.qrc ../bin/obj/src1.0.0/ && $(COPY_FILE) --parents app/main.cc app/mainwindow.cc app/mainwindow.ui.cc deckviewer/cardeditor.cc deckviewer/navigatordock.cc deckviewer/navigatormodel.cc deckviewer/navigatorview.cc qpunchcard/card.cc qpunchcard/deck.cc qpunchcard/format.cc qpunchcard/widget.cc text/codec.cc text/editor.cc text/editordock.cc driver/driver.cc libs/qextserialport/qextserialbase.cpp libs/qextserialport/qextserialport.cpp libs/qextserialport/posix_qextserialport.cpp driver/documation-m200-client/controller.cc ../bin/obj/src1.0.0/ && (cd `dirname ../bin/obj/src1.0.0` && $(TAR) src1.0.0.tar src1.0.0 && $(COMPRESS) src1.0.0.tar) && $(MOVE) `dirname ../bin/obj/src1.0.0`/src1.0.0.tar.gz . && $(DEL_FILE) -r ../bin/obj/src1.0.0
     124qmake_all: FORCE
    213125
    214 
    215 clean:compiler_clean
    216         -$(DEL_FILE) $(OBJECTS)
    217         -$(DEL_FILE) *~ core *.core
    218 
    219 
    220 ####### Sub-libraries
    221 
    222 distclean: clean
    223         -$(DEL_FILE) $(TARGET)
     126make_default: debug-make_default release-make_default FORCE
     127make_first: debug-make_first release-make_first FORCE
     128all: debug-all release-all FORCE
     129clean: debug-clean release-clean FORCE
     130distclean: debug-distclean release-distclean FORCE
    224131        -$(DEL_FILE) Makefile
    225132
     133debug-mocclean: $(MAKEFILE).Debug
     134        $(MAKE) -f $(MAKEFILE).Debug mocclean
     135release-mocclean: $(MAKEFILE).Release
     136        $(MAKE) -f $(MAKEFILE).Release mocclean
     137mocclean: debug-mocclean release-mocclean
    226138
    227 mocclean: compiler_moc_header_clean compiler_moc_source_clean
    228 
    229 mocables: compiler_moc_header_make_all compiler_moc_source_make_all
    230 
    231 compiler_moc_header_make_all: ../bin/moc/moc_mainwindow.cpp ../bin/moc/moc_cardeditor.cpp ../bin/moc/moc_navigatordock.cpp ../bin/moc/moc_navigatormodel.cpp ../bin/moc/moc_navigatorview.cpp ../bin/moc/moc_deck.cpp ../bin/moc/moc_widget.cpp ../bin/moc/moc_editor.cpp ../bin/moc/moc_editordock.cpp ../bin/moc/moc_driver.cpp ../bin/moc/moc_controller.cpp
    232 compiler_moc_header_clean:
    233         -$(DEL_FILE) ../bin/moc/moc_mainwindow.cpp ../bin/moc/moc_cardeditor.cpp ../bin/moc/moc_navigatordock.cpp ../bin/moc/moc_navigatormodel.cpp ../bin/moc/moc_navigatorview.cpp ../bin/moc/moc_deck.cpp ../bin/moc/moc_widget.cpp ../bin/moc/moc_editor.cpp ../bin/moc/moc_editordock.cpp ../bin/moc/moc_driver.cpp ../bin/moc/moc_controller.cpp
    234 ../bin/moc/moc_mainwindow.cpp: qpunchcard/card.h \
    235                 qpunchcard/deck.h \
    236                 qpunchcard/format.h \
    237                 deckviewer/navigatordock.h \
    238                 deckviewer/navigatormodel.h \
    239                 deckviewer/navigatorview.h \
    240                 app/mainwindow.h \
    241                 deckviewer/cardeditor.h \
    242                 qpunchcard/widget.h \
    243                 text/editordock.h \
    244                 text/codec.h \
    245                 text/editor.h \
    246                 driver/driver.h \
    247                 app/mainwindow.h
    248         /usr/bin/moc $(DEFINES) $(INCPATH) app/mainwindow.h -o ../bin/moc/moc_mainwindow.cpp
    249 
    250 ../bin/moc/moc_cardeditor.cpp: qpunchcard/deck.h \
    251                 qpunchcard/card.h \
    252                 qpunchcard/format.h \
    253                 qpunchcard/widget.h \
    254                 app/mainwindow.h \
    255                 deckviewer/navigatordock.h \
    256                 deckviewer/navigatormodel.h \
    257                 deckviewer/navigatorview.h \
    258                 deckviewer/cardeditor.h \
    259                 text/editordock.h \
    260                 text/codec.h \
    261                 text/editor.h \
    262                 driver/driver.h \
    263                 deckviewer/cardeditor.h
    264         /usr/bin/moc $(DEFINES) $(INCPATH) deckviewer/cardeditor.h -o ../bin/moc/moc_cardeditor.cpp
    265 
    266 ../bin/moc/moc_navigatordock.cpp: deckviewer/navigatormodel.h \
    267                 deckviewer/navigatordock.h \
    268                 deckviewer/navigatorview.h \
    269                 app/mainwindow.h \
    270                 qpunchcard/card.h \
    271                 qpunchcard/deck.h \
    272                 qpunchcard/format.h \
    273                 deckviewer/cardeditor.h \
    274                 qpunchcard/widget.h \
    275                 text/editordock.h \
    276                 text/codec.h \
    277                 text/editor.h \
    278                 driver/driver.h \
    279                 deckviewer/navigatordock.h
    280         /usr/bin/moc $(DEFINES) $(INCPATH) deckviewer/navigatordock.h -o ../bin/moc/moc_navigatordock.cpp
    281 
    282 ../bin/moc/moc_navigatormodel.cpp: deckviewer/navigatordock.h \
    283                 deckviewer/navigatormodel.h \
    284                 deckviewer/navigatorview.h \
    285                 app/mainwindow.h \
    286                 qpunchcard/card.h \
    287                 qpunchcard/deck.h \
    288                 qpunchcard/format.h \
    289                 deckviewer/cardeditor.h \
    290                 qpunchcard/widget.h \
    291                 text/editordock.h \
    292                 text/codec.h \
    293                 text/editor.h \
    294                 driver/driver.h \
    295                 deckviewer/navigatormodel.h
    296         /usr/bin/moc $(DEFINES) $(INCPATH) deckviewer/navigatormodel.h -o ../bin/moc/moc_navigatormodel.cpp
    297 
    298 ../bin/moc/moc_navigatorview.cpp: deckviewer/navigatordock.h \
    299                 deckviewer/navigatormodel.h \
    300                 deckviewer/navigatorview.h \
    301                 app/mainwindow.h \
    302                 qpunchcard/card.h \
    303                 qpunchcard/deck.h \
    304                 qpunchcard/format.h \
    305                 deckviewer/cardeditor.h \
    306                 qpunchcard/widget.h \
    307                 text/editordock.h \
    308                 text/codec.h \
    309                 text/editor.h \
    310                 driver/driver.h \
    311                 deckviewer/navigatorview.h
    312         /usr/bin/moc $(DEFINES) $(INCPATH) deckviewer/navigatorview.h -o ../bin/moc/moc_navigatorview.cpp
    313 
    314 ../bin/moc/moc_deck.cpp: qpunchcard/card.h \
    315                 qpunchcard/format.h \
    316                 qpunchcard/deck.h \
    317                 qpunchcard/deck.h
    318         /usr/bin/moc $(DEFINES) $(INCPATH) qpunchcard/deck.h -o ../bin/moc/moc_deck.cpp
    319 
    320 ../bin/moc/moc_widget.cpp: qpunchcard/card.h \
    321                 qpunchcard/widget.h
    322         /usr/bin/moc $(DEFINES) $(INCPATH) qpunchcard/widget.h -o ../bin/moc/moc_widget.cpp
    323 
    324 ../bin/moc/moc_editor.cpp: app/mainwindow.h \
    325                 qpunchcard/card.h \
    326                 qpunchcard/deck.h \
    327                 qpunchcard/format.h \
    328                 deckviewer/navigatordock.h \
    329                 deckviewer/navigatormodel.h \
    330                 deckviewer/navigatorview.h \
    331                 qpunchcard/widget.h \
    332                 deckviewer/cardeditor.h \
    333                 text/editordock.h \
    334                 text/codec.h \
    335                 text/editor.h \
    336                 driver/driver.h \
    337                 text/editor.h
    338         /usr/bin/moc $(DEFINES) $(INCPATH) text/editor.h -o ../bin/moc/moc_editor.cpp
    339 
    340 ../bin/moc/moc_editordock.cpp: app/mainwindow.h \
    341                 qpunchcard/card.h \
    342                 qpunchcard/deck.h \
    343                 qpunchcard/format.h \
    344                 deckviewer/navigatordock.h \
    345                 deckviewer/navigatormodel.h \
    346                 deckviewer/navigatorview.h \
    347                 qpunchcard/widget.h \
    348                 deckviewer/cardeditor.h \
    349                 text/editordock.h \
    350                 text/codec.h \
    351                 text/editor.h \
    352                 driver/driver.h \
    353                 text/editordock.h
    354         /usr/bin/moc $(DEFINES) $(INCPATH) text/editordock.h -o ../bin/moc/moc_editordock.cpp
    355 
    356 ../bin/moc/moc_driver.cpp: app/mainwindow.h \
    357                 qpunchcard/card.h \
    358                 qpunchcard/deck.h \
    359                 qpunchcard/format.h \
    360                 deckviewer/navigatordock.h \
    361                 deckviewer/navigatormodel.h \
    362                 deckviewer/navigatorview.h \
    363                 qpunchcard/widget.h \
    364                 deckviewer/cardeditor.h \
    365                 text/editordock.h \
    366                 text/codec.h \
    367                 text/editor.h \
    368                 driver/driver.h \
    369                 driver/driver.h
    370         /usr/bin/moc $(DEFINES) $(INCPATH) driver/driver.h -o ../bin/moc/moc_driver.cpp
    371 
    372 ../bin/moc/moc_controller.cpp: driver/driver.h \
    373                 app/mainwindow.h \
    374                 qpunchcard/card.h \
    375                 qpunchcard/deck.h \
    376                 qpunchcard/format.h \
    377                 deckviewer/navigatordock.h \
    378                 deckviewer/navigatormodel.h \
    379                 deckviewer/navigatorview.h \
    380                 qpunchcard/widget.h \
    381                 deckviewer/cardeditor.h \
    382                 text/editordock.h \
    383                 text/codec.h \
    384                 text/editor.h \
    385                 driver/documation-m200-client/controller.h
    386         /usr/bin/moc $(DEFINES) $(INCPATH) driver/documation-m200-client/controller.h -o ../bin/moc/moc_controller.cpp
    387 
    388 compiler_rcc_make_all: qrc_icons.cpp
    389 compiler_rcc_clean:
    390         -$(DEL_FILE) qrc_icons.cpp
    391 qrc_icons.cpp: ../shared/icons.qrc \
    392                 ../shared/icons/go-down.png \
    393                 ../shared/icons/document-open.png \
    394                 ../shared/icons/go-up.png \
    395                 ../shared/icons/format-indent-more.png \
    396                 ../shared/icons/system-log-out.png \
    397                 ../shared/icons/go-top.png \
    398                 ../shared/icons/document-new.png \
    399                 ../shared/icons/go-previous.png \
    400                 ../shared/icons/list-remove.png \
    401                 ../shared/icons/edit-undo.png \
    402                 ../shared/icons/go-next.png \
    403                 ../shared/icons/document-save.png \
    404                 ../shared/icons/edit-redo.png \
    405                 ../shared/icons/format-indent-less.png \
    406                 ../shared/icons/document-save-as.png \
    407                 ../shared/icons/list-add.png
    408         /usr/bin/rcc -name icons ../shared/icons.qrc -o qrc_icons.cpp
    409 
    410 compiler_image_collection_make_all: qmake_image_collection.cpp
    411 compiler_image_collection_clean:
    412         -$(DEL_FILE) qmake_image_collection.cpp
    413 compiler_moc_source_make_all:
    414 compiler_moc_source_clean:
    415 compiler_uic_make_all:
    416 compiler_uic_clean:
    417 compiler_yacc_decl_make_all:
    418 compiler_yacc_decl_clean:
    419 compiler_yacc_impl_make_all:
    420 compiler_yacc_impl_clean:
    421 compiler_lex_make_all:
    422 compiler_lex_clean:
    423 compiler_clean: compiler_moc_header_clean compiler_rcc_clean
    424 
    425 ####### Compile
    426 
    427 ../bin/obj/main.o: app/main.cc app/mainwindow.h \
    428                 qpunchcard/card.h \
    429                 qpunchcard/deck.h \
    430                 qpunchcard/format.h \
    431                 deckviewer/navigatordock.h \
    432                 deckviewer/navigatormodel.h \
    433                 deckviewer/navigatorview.h \
    434                 qpunchcard/widget.h \
    435                 deckviewer/cardeditor.h \
    436                 text/editordock.h \
    437                 text/codec.h \
    438                 text/editor.h \
    439                 driver/driver.h
    440         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/main.o app/main.cc
    441 
    442 ../bin/obj/mainwindow.o: app/mainwindow.cc app/mainwindow.h \
    443                 qpunchcard/card.h \
    444                 qpunchcard/deck.h \
    445                 qpunchcard/format.h \
    446                 deckviewer/navigatordock.h \
    447                 deckviewer/navigatormodel.h \
    448                 deckviewer/navigatorview.h \
    449                 qpunchcard/widget.h \
    450                 deckviewer/cardeditor.h \
    451                 text/editordock.h \
    452                 text/codec.h \
    453                 text/editor.h \
    454                 driver/driver.h
    455         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/mainwindow.o app/mainwindow.cc
    456 
    457 ../bin/obj/mainwindow.ui.o: app/mainwindow.ui.cc app/mainwindow.h \
    458                 qpunchcard/card.h \
    459                 qpunchcard/deck.h \
    460                 qpunchcard/format.h \
    461                 deckviewer/navigatordock.h \
    462                 deckviewer/navigatormodel.h \
    463                 deckviewer/navigatorview.h \
    464                 qpunchcard/widget.h \
    465                 deckviewer/cardeditor.h \
    466                 text/editordock.h \
    467                 text/codec.h \
    468                 text/editor.h \
    469                 driver/driver.h
    470         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/mainwindow.ui.o app/mainwindow.ui.cc
    471 
    472 ../bin/obj/cardeditor.o: deckviewer/cardeditor.cc deckviewer/cardeditor.h \
    473                 qpunchcard/deck.h \
    474                 qpunchcard/card.h \
    475                 qpunchcard/format.h \
    476                 qpunchcard/widget.h \
    477                 app/mainwindow.h \
    478                 deckviewer/navigatordock.h \
    479                 deckviewer/navigatormodel.h \
    480                 deckviewer/navigatorview.h \
    481                 text/editordock.h \
    482                 text/codec.h \
    483                 text/editor.h \
    484                 driver/driver.h
    485         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/cardeditor.o deckviewer/cardeditor.cc
    486 
    487 ../bin/obj/navigatordock.o: deckviewer/navigatordock.cc deckviewer/navigatordock.h \
    488                 deckviewer/navigatormodel.h \
    489                 deckviewer/navigatorview.h \
    490                 app/mainwindow.h \
    491                 qpunchcard/card.h \
    492                 qpunchcard/deck.h \
    493                 qpunchcard/format.h \
    494                 deckviewer/cardeditor.h \
    495                 qpunchcard/widget.h \
    496                 text/editordock.h \
    497                 text/codec.h \
    498                 text/editor.h \
    499                 driver/driver.h
    500         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/navigatordock.o deckviewer/navigatordock.cc
    501 
    502 ../bin/obj/navigatormodel.o: deckviewer/navigatormodel.cc deckviewer/navigatormodel.h \
    503                 deckviewer/navigatordock.h \
    504                 deckviewer/navigatorview.h \
    505                 app/mainwindow.h \
    506                 qpunchcard/card.h \
    507                 qpunchcard/deck.h \
    508                 qpunchcard/format.h \
    509                 deckviewer/cardeditor.h \
    510                 qpunchcard/widget.h \
    511                 text/editordock.h \
    512                 text/codec.h \
    513                 text/editor.h \
    514                 driver/driver.h
    515         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/navigatormodel.o deckviewer/navigatormodel.cc
    516 
    517 ../bin/obj/navigatorview.o: deckviewer/navigatorview.cc deckviewer/navigatorview.h \
    518                 deckviewer/navigatordock.h \
    519                 deckviewer/navigatormodel.h \
    520                 app/mainwindow.h \
    521                 qpunchcard/card.h \
    522                 qpunchcard/deck.h \
    523                 qpunchcard/format.h \
    524                 deckviewer/cardeditor.h \
    525                 qpunchcard/widget.h \
    526                 text/editordock.h \
    527                 text/codec.h \
    528                 text/editor.h \
    529                 driver/driver.h
    530         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/navigatorview.o deckviewer/navigatorview.cc
    531 
    532 ../bin/obj/card.o: qpunchcard/card.cc qpunchcard/card.h
    533         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/card.o qpunchcard/card.cc
    534 
    535 ../bin/obj/deck.o: qpunchcard/deck.cc qpunchcard/deck.h \
    536                 qpunchcard/card.h \
    537                 qpunchcard/format.h
    538         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/deck.o qpunchcard/deck.cc
    539 
    540 ../bin/obj/format.o: qpunchcard/format.cc qpunchcard/format.h \
    541                 qpunchcard/card.h \
    542                 qpunchcard/deck.h
    543         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/format.o qpunchcard/format.cc
    544 
    545 ../bin/obj/widget.o: qpunchcard/widget.cc qpunchcard/widget.h \
    546                 qpunchcard/card.h
    547         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/widget.o qpunchcard/widget.cc
    548 
    549 ../bin/obj/codec.o: text/codec.cc text/codec.h \
    550                 qpunchcard/card.h \
    551                 qpunchcard/deck.h \
    552                 qpunchcard/format.h \
    553                 text/cardcodes.h
    554         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/codec.o text/codec.cc
    555 
    556 ../bin/obj/editor.o: text/editor.cc text/editor.h \
    557                 app/mainwindow.h \
    558                 qpunchcard/card.h \
    559                 qpunchcard/deck.h \
    560                 qpunchcard/format.h \
    561                 deckviewer/navigatordock.h \
    562                 deckviewer/navigatormodel.h \
    563                 deckviewer/navigatorview.h \
    564                 qpunchcard/widget.h \
    565                 deckviewer/cardeditor.h \
    566                 text/editordock.h \
    567                 text/codec.h \
    568                 driver/driver.h
    569         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/editor.o text/editor.cc
    570 
    571 ../bin/obj/editordock.o: text/editordock.cc text/editordock.h \
    572                 app/mainwindow.h \
    573                 qpunchcard/card.h \
    574                 qpunchcard/deck.h \
    575                 qpunchcard/format.h \
    576                 deckviewer/navigatordock.h \
    577                 deckviewer/navigatormodel.h \
    578                 deckviewer/navigatorview.h \
    579                 qpunchcard/widget.h \
    580                 deckviewer/cardeditor.h \
    581                 driver/driver.h \
    582                 text/codec.h \
    583                 text/editor.h
    584         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/editordock.o text/editordock.cc
    585 
    586 ../bin/obj/driver.o: driver/driver.cc driver/driver.h \
    587                 app/mainwindow.h \
    588                 qpunchcard/card.h \
    589                 qpunchcard/deck.h \
    590                 qpunchcard/format.h \
    591                 deckviewer/navigatordock.h \
    592                 deckviewer/navigatormodel.h \
    593                 deckviewer/navigatorview.h \
    594                 qpunchcard/widget.h \
    595                 deckviewer/cardeditor.h \
    596                 text/editordock.h \
    597                 text/codec.h \
    598                 text/editor.h
    599         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/driver.o driver/driver.cc
    600 
    601 ../bin/obj/qextserialbase.o: libs/qextserialport/qextserialbase.cpp libs/qextserialport/qextserialbase.h
    602         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/qextserialbase.o libs/qextserialport/qextserialbase.cpp
    603 
    604 ../bin/obj/qextserialport.o: libs/qextserialport/qextserialport.cpp libs/qextserialport/qextserialport.h \
    605                 libs/qextserialport/posix_qextserialport.h \
    606                 libs/qextserialport/qextserialbase.h \
    607                 libs/qextserialport/win_qextserialport.h
    608         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/qextserialport.o libs/qextserialport/qextserialport.cpp
    609 
    610 ../bin/obj/posix_qextserialport.o: libs/qextserialport/posix_qextserialport.cpp libs/qextserialport/posix_qextserialport.h \
    611                 libs/qextserialport/qextserialbase.h
    612         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/posix_qextserialport.o libs/qextserialport/posix_qextserialport.cpp
    613 
    614 ../bin/obj/controller.o: driver/documation-m200-client/controller.cc driver/documation-m200-client/controller.h \
    615                 driver/driver.h \
    616                 app/mainwindow.h \
    617                 qpunchcard/card.h \
    618                 qpunchcard/deck.h \
    619                 qpunchcard/format.h \
    620                 deckviewer/navigatordock.h \
    621                 deckviewer/navigatormodel.h \
    622                 deckviewer/navigatorview.h \
    623                 qpunchcard/widget.h \
    624                 deckviewer/cardeditor.h \
    625                 text/editordock.h \
    626                 text/codec.h \
    627                 text/editor.h
    628         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/controller.o driver/documation-m200-client/controller.cc
    629 
    630 ../bin/obj/moc_mainwindow.o: ../bin/moc/moc_mainwindow.cpp
    631         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_mainwindow.o ../bin/moc/moc_mainwindow.cpp
    632 
    633 ../bin/obj/moc_cardeditor.o: ../bin/moc/moc_cardeditor.cpp
    634         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_cardeditor.o ../bin/moc/moc_cardeditor.cpp
    635 
    636 ../bin/obj/moc_navigatordock.o: ../bin/moc/moc_navigatordock.cpp
    637         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_navigatordock.o ../bin/moc/moc_navigatordock.cpp
    638 
    639 ../bin/obj/moc_navigatormodel.o: ../bin/moc/moc_navigatormodel.cpp
    640         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_navigatormodel.o ../bin/moc/moc_navigatormodel.cpp
    641 
    642 ../bin/obj/moc_navigatorview.o: ../bin/moc/moc_navigatorview.cpp
    643         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_navigatorview.o ../bin/moc/moc_navigatorview.cpp
    644 
    645 ../bin/obj/moc_deck.o: ../bin/moc/moc_deck.cpp
    646         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_deck.o ../bin/moc/moc_deck.cpp
    647 
    648 ../bin/obj/moc_widget.o: ../bin/moc/moc_widget.cpp
    649         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_widget.o ../bin/moc/moc_widget.cpp
    650 
    651 ../bin/obj/moc_editor.o: ../bin/moc/moc_editor.cpp
    652         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_editor.o ../bin/moc/moc_editor.cpp
    653 
    654 ../bin/obj/moc_editordock.o: ../bin/moc/moc_editordock.cpp
    655         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_editordock.o ../bin/moc/moc_editordock.cpp
    656 
    657 ../bin/obj/moc_driver.o: ../bin/moc/moc_driver.cpp
    658         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_driver.o ../bin/moc/moc_driver.cpp
    659 
    660 ../bin/obj/moc_controller.o: ../bin/moc/moc_controller.cpp
    661         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/moc_controller.o ../bin/moc/moc_controller.cpp
    662 
    663 ../bin/obj/qrc_icons.o: qrc_icons.cpp
    664         $(CXX) -c $(CXXFLAGS) $(INCPATH) -o ../bin/obj/qrc_icons.o qrc_icons.cpp
    665 
    666 ####### Install
    667 
    668 install:   FORCE
    669 
    670 uninstall:   FORCE
    671 
     139debug-mocables: $(MAKEFILE).Debug
     140        $(MAKE) -f $(MAKEFILE).Debug mocables
     141release-mocables: $(MAKEFILE).Release
     142        $(MAKE) -f $(MAKEFILE).Release mocables
     143mocables: debug-mocables release-mocables
    672144FORCE:
    673145
     146$(MAKEFILE).Debug: Makefile
     147$(MAKEFILE).Release: Makefile
  • punch-card-project/trunk/punch-card-editor/src/app/mainwindow.cc

    r58 r59  
    33#include "qpunchcard/widget.h"
    44#include "deckviewer/navigatormodel.h"
     5
     6#include "qpunchcard/jones.h"
    57
    68#include <QApplication>
     
    5658
    5759void MainWindow::createGraphicalEditor() {
    58         graphical_editor = new CardEditor(this); // this takes ownership nevertheless
     60        graphical_editor = new CardEditor(this); // ´this´ takes ownership nevertheless
    5961        setCentralWidget(graphical_editor);
    6062        // signale und so:
     
    9496        // this method will close it when everything went good
    9597        QFile file(filename);
    96         const FileFormat* format = FileFormatFactory::createFormat(
     98        FileFormat format = FileFormatFactory::createFormat(
    9799                                FileFormatFactory::autoDetectFormat(file)
    98100                             );
    99         Deck* new_deck = new Deck(format);
     101        Deck* new_deck = new Deck;
    100102        // Leser anschmeissen
    101         if( new_deck->read(file) ) {
     103        if( new_deck->read(format, file) ) {
    102104                statusBar()->showMessage(QString(tr("Deck read in successfully")), 4000);
    103         } else
    104                 qDebug() << "Errors while reading in the Deck.";
     105        } else {
     106                QMessageBox::critical(this, tr("Could not open file"),
     107                                      tr("Could not open file %1 using format %2 for reading. Reason: %3")
     108                                      .arg(filename).arg(format.getName()).arg(file.errorString())
     109                                      );
     110                return;
     111        }
    105112        // Alte Datei rausschmeissen
    106113        closeDeck();
    107114        // Neue setzen
    108115        deck = new_deck;
    109         this->file.setFileName( file.fileName() );
    110116        notifyFileOpened();
    111117}
     
    120126                }
    121127        } else
    122                 qDebug("notifyFileOpened is supposed to be called when a file was *opened*");
     128                qDebug("notifyFileOpened is supposed to be called when a file was *opened*, not closed");
    123129}
    124130
     
    141147void MainWindow::openFile() {
    142148        if(maybeSave()) {
     149                Q_ASSERT(deck);
    143150                // Oeffnen-Dialog anzeigen.
    144                 QString filename = QFileDialog::getOpenFileName(this,
     151                QString new_filename = QFileDialog::getOpenFileName(this,
    145152                        tr("Open Card Deck File..."),
    146                         QFileInfo(file).absolutePath(),
     153                        QFileInfo(deck->getFileName()).absolutePath(),
    147154                        tr("Jones Emulated Card Decks (*);;Card Editor XML-Files (*.xml *.cml)"));
    148                 if(!filename.isEmpty()) {
    149                         loadDeck(filename);
     155                if(!new_filename.isEmpty()) {
     156                        loadDeck(new_filename);
    150157                }
    151158        }
     
    153160
    154161bool MainWindow::saveFile() {
    155         if(!file.exists() || !deck->canSave())
    156                 return saveFileAs();
    157         else
    158                 return deck->save(file);
     162        return deck->canSave() ? deck->save() : saveFileAs();
    159163}
    160164
    161165bool MainWindow::saveFileAs() {
     166        Q_ASSERT(deck);
    162167        // GUI anzeigen zum Speichern
    163168        QString filename = QFileDialog::getSaveFileName(this,
    164169                tr("Save Card Deck File..."),
    165                 QFileInfo(file).absolutePath(),
     170                QFileInfo(deck->getFileName()).absolutePath(),
    166171                tr("Jones Emulator Card Decks (*);;Card Editor XML-Files (*.xml *.cml)"));
    167172        if(filename.isEmpty())
    168173                return false;
    169         // Eigentlich jetzt: Nachschauen, welches Dateiformat zum Benutzen und so.
     174        // Eigentlich jetzt: Nachfragen, welches Dateiformat zum Benutzen und so.
    170175        // stattdessen jetzt mal billig:
    171         file.setFileName(filename);
    172         if(deck->canSave()) {
    173                 // Nutze das bekannte Dateiformat
    174                 return deck->save(file);
     176        if(!deck->hasFormat()) {
     177                // Es fehlt noch ein Format, nutze einfach mal das erstbeste
     178                deck->setFormat( FileFormatFactory::createFormat(FileFormatFactory::availableFormats()[0]) );
     179        }
     180
     181        // Eigene Datei benutzen, statt einfach nur deck->save() aufzurufen, um ggf. Fehler und so
     182        // zurueckzukriegen.
     183        QFile file(filename);
     184        if(deck->save(deck->getFormat(), file)) {
     185                statusBar()->showMessage(QString(tr("Deck written successfully to %1").arg(filename)), 4000);
     186                return true;
    175187        } else {
    176                 // Nutze einfach mal
    177                 deck->setFormat( new JonesFileFormat );
    178                 if(deck->save(file)) {
    179                         statusBar()->showMessage(QString(tr("Deck written successfully to %1").arg(filename)), 4000);
    180                         return true;
    181                 } else {
    182                         // todo: das hier als qmessagewindow oder so
    183                         statusBar()->showMessage(QString(tr("Error while writing the deck")), 4000);
    184                         return false;
    185                 }
     188                QMessageBox::critical(this, tr("Saving File failed"),
     189                                      tr("Could not write card deck to file %1, using format %2. Reason: %3")
     190                                      .arg(filename).arg(deck->getFormat().getName()).arg(file.errorString())
     191                );
     192                return false;
    186193        }
    187194}
     
    193200        // Dann abspeichern oder so... hier waere natuerlich auch interessant,
    194201        // auf bestehende Dateinamen zurueckgreifen zu koennen...
     202        if(this->text_editors.count() == 0) {
     203                // no text editor present => ask user if he wants to open one
     204                if(QMessageBox::question(this, tr("No Text Editor started"),
     205                        tr("You have not started any Text Editor component yet. "
     206                           "Each text editor uses his own codec to translate a punch card. "
     207                           "Hence you need a text editor to export a text using a codec. "
     208                           "Do you want to open a new text editor?"),
     209                        QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) {
     210                                this->newTextEditor();
     211                }
     212        } else if(this->text_editors.count() == 1) {
     213                // exactly *one* text editor present
     214                Q_ASSERT(text_editors[0]);
     215                text_editors[0]->exportText();
     216        } else {
     217                // multiple editors present
     218                // urhm... there *should* have been some other toolbar by now... but there is not... so
     219                // display some sort of "selection" dialog
     220                qDebug() << "Select text editor...";
     221        }
    195222}
    196223
  • punch-card-project/trunk/punch-card-editor/src/app/mainwindow.h

    r58 r59  
    3535        // gerade offenes *Dokument*
    3636        QPointer< Deck > deck;
    37         //QPointer< QFile > file;
    38         QFile file;
    3937
    4038        QPointer<Navigator::Dock> navigator;
     
    124122        QToolBar* main_bar;
    125123
    126         QUndoView* undo_view;
     124        QPointer<QUndoView> undo_view;
    127125
    128126        // FILE Actions
  • punch-card-project/trunk/punch-card-editor/src/app/mainwindow.ui.cc

    r58 r59  
    2424        // * Menus und Actions erstellen
    2525        if(opened) {
     26                Q_ASSERT(deck);
     27
    2628                // titel setzen
    27                 setWindowFilePath(QFileInfo(file).filePath());
     29                if(deck->hasFile()) {
     30                        setWindowFilePath(QFileInfo(deck->getFileName()).filePath());
     31                }
    2832                setWindowTitle(tr("%1[*] - %2").arg(
    29                         file.fileName().isEmpty() ? tr("New Card Deck") : file.fileName()
     33                        deck->hasFile() ? tr("New Card Deck") : deck->getFileName()
    3034                        ).arg(tr("Punch Card Editor")));
    3135                // Modified-Stern ([*]) verbinden
  • punch-card-project/trunk/punch-card-editor/src/deckviewer/navigatordock.cc

    r52 r59  
    2626        // Beim Laden/Entladen eines Docks Model und View an/ausschalten
    2727        connect(main, SIGNAL(fileOpened(bool)), this, SLOT(setVisible(bool)));
    28         connect(main, SIGNAL(fileOpened(bool)), model, SLOT(setDock(bool)));
     28        connect(main, SIGNAL(fileOpened(bool)), model, SLOT(setDeck(bool)));
    2929}
    3030
  • punch-card-project/trunk/punch-card-editor/src/deckviewer/navigatormodel.cc

    r52 r59  
    3232        // direkt im dock gespeichert ist und man sich als das
    3333        // deck vom dock holt.
     34
     35        // weils sonst gerne abstuerzt:
     36        reset();
    3437
    3538        //if(!main) return; // das waere sowieso haesslich
  • punch-card-project/trunk/punch-card-editor/src/driver/documation-m200-client.pri

    r53 r59  
    11include( ../libs/qextserialport.pri )
    2 
     2INCLUDEPATH += ../../protocols/documation-m200
    33HEADERS += driver/documation-m200-client/controller.h \
    4            ../../protocols/documation-m200/pc-uc-protocol.h
    5 
    6 SOURCES += driver/documation-m200-client/controller.cc
     4    ../../protocols/documation-m200/pc-uc-protocol.h \
     5    driver/documation-m200-client/client.h \
     6    driver/documation-m200-client/logger.h
     7SOURCES += driver/documation-m200-client/controller.cc \
     8    driver/documation-m200-client/client.cc \
     9    driver/documation-m200-client/logger.cc
  • punch-card-project/trunk/punch-card-editor/src/driver/documation-m200-client/controller.cc

    r53 r59  
    22
    33#include <QLabel>
     4#include <QHBoxLayout>
     5#include <QVBoxLayout>
     6#include <QPushButton>
    47
    58using namespace QPunchCard;
     
    710using namespace DocumationM200;
    811
    9 Controller::Controller() {
    10         // add some child:
    11         new QLabel("Hello World", this);
     12Controller::Controller(QWidget* parent) : QWidget(parent) {
     13        // set up the heap widgets
     14        worker = new ClientThread(this);
     15        log = new QTextEdit(this);
     16        QWidget* button_box = createButtonBar();
     17
     18        // set up the log
     19        log->setReadOnly(true);
     20
     21        // create the global box
     22        QHBoxLayout* layout = new QHBoxLayout;
     23        layout->addWidget(button_box);
     24        layout->addWidget(log);
     25        setLayout(layout);
     26
     27        // now going to fire up working thread
     28        connect(worker, SIGNAL(recievedResponse(QString, QString)), this, SLOT(logResponse(QString,QString)), Qt::QueuedConnection);
     29
     30        qDebug("Starting worker thread");
     31        worker->start();
     32        qDebug("Finished starting thread");
    1233}
     34
     35QWidget* Controller::createButtonBar() {
     36        QWidget* box = new QWidget(this);
     37        QHBoxLayout* layout = new QHBoxLayout(box);
     38
     39        start_button = new QPushButton(tr("Start"), box);
     40        connect(start_button, SIGNAL(clicked()), worker, SLOT(fire_start()));
     41
     42        stop_button = new QPushButton(tr("Stop"), box);
     43        connect(stop_button, SIGNAL(clicked()), worker, SLOT(fire_stop()));
     44
     45        ping_button = new QPushButton(tr("Ping"), box);
     46        connect(ping_button, SIGNAL(clicked()), worker, SLOT(fire_ping()));
     47
     48        reset_button = new QPushButton(tr("Reset"), box);
     49        connect(reset_button, SIGNAL(clicked()), worker, SLOT(fire_reset()));
     50
     51        QWidget* clear_log = new QPushButton(tr("Clear log"), box);
     52        connect(clear_log, SIGNAL(clicked()), log, SLOT(clear()));
     53
     54        quit_button = new QPushButton(tr("Quit Client"), box);
     55        quit_button->setToolTip("Suspend or restart Client Thread");
     56        connect(reset_button, SIGNAL(clicked()), this, SLOT(client_toggle_run()));
     57
     58        box->setLayout(layout);
     59        return box;
     60}
     61
     62void Controller::client_toggle_run() {
     63        // when user clicks quit_button
     64        bool on = worker->isRunning();
     65
     66        if(on) {
     67                worker->setAbort(true);
     68        } else {
     69                // fire up client
     70                worker->start();
     71        }
     72
     73        start_button->setEnabled(on);
     74        stop_button->setEnabled(on);
     75        ping_button->setEnabled(on);
     76        reset_button->setEnabled(on);
     77        quit_button->setText(on ? tr("Quit Client") : tr("Restart Client"));
     78}
     79
     80void Controller::logResponse(QString code, QString comment) {
     81        log->moveCursor(QTextCursor::End);
     82        log->insertHtml("<br><b><font color=red>"+code+"</font></b> "+comment);
     83}
  • punch-card-project/trunk/punch-card-editor/src/driver/documation-m200-client/controller.h

    r53 r59  
    44#include <QDockWidget>
    55#include <QString>
     6#include <QPointer>
    67#include <QList>
     8#include <QPushButton>
    79
    810namespace QPunchCard {
     
    1719#include "driver/driver.h"
    1820#include "app/mainwindow.h"
     21#include "client.h"
    1922
    2023namespace QPunchCard {
     
    2427class Controller : public QWidget {
    2528        Q_OBJECT
     29
     30        QPointer<ClientThread> worker;
     31        QPointer<QTextEdit> log;
     32
     33        QPushButton *start_button, *stop_button, *ping_button, *reset_button, *quit_button;
     34
     35        QWidget* createButtonBar();
     36
    2637public:
    27         Controller();
     38        Controller(QWidget* parent = 0);
     39
     40public slots:
     41        void logResponse(QString code, QString comment);
     42        void client_toggle_run();
    2843};
    2944
  • punch-card-project/trunk/punch-card-editor/src/driver/driver.cc

    r53 r59  
    11#include "driver.h"
     2
     3#include "driver/documation-m200-client/controller.h"
    24
    35#include <QLabel>
     
    2931QList<QString> DriverFactory::availableDrivers() {
    3032        QList<QString> ret;
    31         ret << "Test";
     33        ret << "Test" << "Documation M200 Card Reader";
    3234        return ret;
    3335}
     
    3638        if(name == "Test") {
    3739                return new QLabel("This is the Test driver :-)", parent);
     40        } else if(name == "Documation M200 Card Reader") {
     41                return new DocumationM200::Controller(parent);
    3842        } else {
    3943                qDebug() << "DriverFactory: Bad driver: " << name;
  • punch-card-project/trunk/punch-card-editor/src/qpunchcard/deck.cc

    r53 r59  
    77}
    88
    9 Deck::Deck(const FileFormat* format, QObject* parent) :
    10                 QObject(parent), undo_stack(this), format(format) {
     9Deck::Deck(FileFormat format, const QString& filename, QObject* parent) :
     10                QObject(parent), undo_stack(this), format(format), filename(filename) {
    1111        init();
     12        read();
    1213}
    1314
     
    1819
    1920bool Deck::save() {
    20         return file ? save(*file) : false;
     21        return hasFile() ? save(filename) : false;
    2122}
    2223
    23 bool Deck::save(QFile& file) {
    24         return save(format.data(), file);
     24bool Deck::save(const QString& filename) {
     25        return hasFormat() ? save(format, filename) : false;
    2526}
    2627
    27 bool Deck::save(const FileFormat* format, QFile& file) {
    28         return format ? format->write(file, *this) : false;
     28bool Deck::save(FileFormat format, const QString& filename) {
     29        QFile file(filename);
     30        return save(format, file);
     31}
     32
     33bool Deck::save(FileFormat format, QFile& file) {
     34        if( format.write(file, this) ) {
     35                // save filename and format
     36                this->format = format;
     37                this->filename = file.fileName();
     38                return true;
     39        } else {
     40                qDebug() << "Deck saving failed. Format: " << format.getName();
     41                return false;
     42        }
    2943}
    3044
    3145bool Deck::read() {
    32         return file ? read(*file) : false;
     46        return hasFile() ? read(filename) : false;
    3347}
    3448
    35 bool Deck::read(QFile& file) {
    36         return read(format.data(), file);
     49bool Deck::read(const QString& filename) {
     50        return hasFormat() ? save(format, filename) : false;
    3751}
    3852
    39 bool Deck::read(const FileFormat* format, QFile& file) {
    40         return format ? format->read(file, *this) : false;
     53bool Deck::read(FileFormat format, const QString &filename) {
     54        QFile file(filename);
     55        return read(format, file);
    4156}
    4257
    43 void Deck::setFormat(const FileFormat* new_format) {
    44         format = QSharedPointer<const FileFormat>(new_format);
    45 }
    46 
    47 void Deck::setFile(QFile* file) {
    48         this->file = QSharedPointer<QFile>(file);
     58bool Deck::read(FileFormat format, QFile& file) {
     59        if( format.read(file, this) ) {
     60                this->format = format;
     61                this->filename = file.fileName();
     62                return true;
     63        } else {
     64                return false;
     65        }
    4966}
    5067
  • punch-card-project/trunk/punch-card-editor/src/qpunchcard/deck.h

    r53 r59  
    2929        Q_OBJECT
    3030
    31         QSharedPointer<const FileFormat> format;
     31        FileFormat format;
    3232        QList< Card > cards;
    33         QSharedPointer< QFile > file;
    34         //QPointer<QUndoStack> undo_stack;
     33        QString filename;
    3534        QUndoStack undo_stack;
    3635        friend class FileFormat;
     
    4847        Deck(QObject* parent = 0);
    4948        ~Deck() {};
    50         /// Create from file/stream/etc., that is, calls format->read()
    51         Deck(const FileFormat* format, QObject* parent = 0);
     49        /// Create from file with format
     50        Deck(FileFormat format, const QString& filename, QObject* parent = 0);
    5251
    5352        // =========== Loading and Saving, File Format Handling ==================
    5453        // (All Functions are just Shorthands for other direct public method calls)
    5554        bool save();
    56         bool save(QFile& file);
    57         bool save(const FileFormat* format, QFile& file);
     55        bool save(const QString& filename);
     56        bool save(FileFormat format, const QString& filename);
     57        bool save(FileFormat format, QFile& file);
    5858        bool read();
    59         bool read(QFile& file);
    60         bool read(const FileFormat* format, QFile& file);
     59        bool read(const QString& filename);
     60        bool read(FileFormat format, const QString& filename);
     61        bool read(FileFormat format, QFile& file);
     62
    6163
    6264        bool canRead() const { return hasFile() && hasFormat(); }
    6365        bool canSave() const { return canRead(); }
    64         bool hasFormat() const { return format; }
    65         void setFormat(const FileFormat* format);
    66         bool hasFile() const { return file; }
    67         void setFile(QFile* file);
     66        bool hasFormat() const { return !format.isNull(); }
     67        FileFormat getFormat() const { return format; }
     68        void setFormat(FileFormat format) { this->format = format; }
     69        bool hasFile() const { return filename.isEmpty(); }
     70        void setFileName(const QString& filename) { this->filename = filename; }
     71        const QString& getFileName() const { return filename; }
    6872
    6973        // =========== Undo Framework ==================
  • punch-card-project/trunk/punch-card-editor/src/qpunchcard/format.cc

    r52 r59  
     1#include <QDebug>
     2
    13#include "format.h"
    2 #include <QDebug>
     4
     5// formats
     6#include "qpunchcard/jones.h"
    37
    48using namespace QPunchCard;
     
    1014}
    1115
    12 const FileFormat* FileFormatFactory::createFormat(const QString& name) {
    13         if(name == "Jones Emulated Card Deck File")
    14                 return new JonesFileFormat;
    15         if(name == "Punch Card Markup Language File")
    16                 return new PunchCardMarkupLanguageFormat;
    17         else {
     16FileFormat FileFormatFactory::createFormat(const QString& name) {
     17        if(name == "Jones Emulated Card Deck File") {
     18                JonesFileFormat f;
     19                f.name = "Jones Emulated Card Deck File";
     20                return f;
     21        } if(name == "Punch Card Markup Language File") {
     22                PunchCardMarkupLanguageFormat f;
     23                f.name = "Punch Card Markup Language File";
     24                return f;
     25        } else {
    1826                qDebug() << "FileFormatFactory: Invalid createFormat name: " << name;
    19                 return 0;
     27                FileFormat f;
     28                return f;
    2029        }
    2130}
     
    2635}
    2736
    28 bool JonesFileFormat::read(QFile& file, Deck& deck) const {
    29         qDebug() << "Jones reading";
    30 
    31         if(!file.isOpen()) {
    32                 // oeffne Datei
    33                 if(! file.open(QIODevice::ReadOnly))
    34                         return false;
    35         }
    36 
    37         // Now we have an open file at `file`. Use
    38         // QIODevice methods:
    39 
    40         // At first, check the file prefix (magic bytes)
    41         char char1, char2, char3;
    42         file.getChar(&char1);
    43         file.getChar(&char2);
    44         file.getChar(&char3);
    45         if( (char1 == 'H') && (char2 == '8') && (char3 == '0') ) {
    46                 //this.default_col_length = 80; // hum... nice
    47         } else if ((char1 == 'H') && (char2 == '8') && (char3 == '2')) {
    48                 //this.default_col_length = 82;
    49                 return false; // hum... bad
    50         } else {
    51                 // Fehler spezifizieren...:
    52                 // Input file not a card file
    53                 return false;
    54         }
    55 
    56         // Process card deck
    57         while( file.bytesAvailable() > 0 ) {
    58                 //Card* cur_card = new Card();
    59                 Card cur_card;
    60                 // try to read in 120 (body) + 3 (header) bytes
    61                 QByteArray data = file.read(123);
    62 
    63                 if( ((data[0] & 0x08) == 0)
    64                  || ((data[1] & 0x08) == 0)
    65                  || ((data[2] & 0x08) == 0)) {
    66                         // This card was corrupt or there were no more data.
    67                         // Break it. Don't save the current card any more.
    68                         break;
    69                 }
    70 
    71                 /* This algorithm is based on the C algorithm
    72                    of Jones */
    73                 int x = 3;
    74                 for(int cur_col = 0; cur_col < 80; ) {
    75                         /* read in 3 bytes */
    76                         int first = data[x++];
    77                         int second = data[x++];
    78                         int third = data[x++];
    79 
    80                         /* convert to 2 columns */
    81                         int even_col = (first << 4) | (second >> 4);
    82                         int odd_col = ((second & 0017) << 8) | third;
    83 
    84                         /* save the columns in the card */
    85                         // This is integer => Column conversion with
    86                         // implicit knowledge that this followes the
    87                         // Jones file format
    88                         cur_card.column[cur_col++] = jones_integer_to_column(even_col);
    89                         cur_card.column[cur_col++] = jones_integer_to_column(odd_col);
    90                 }
    91 
    92                 /* push card on the card deck*/
    93                 // TODO: Das muss irgendwie ggf. in das UNDO-System eingebaut
    94                 // werden (hier falsche Stelle -- in Deck-Class muss das eingebaut
    95                 // werden
    96                 deck.push_back(cur_card);
    97         } // while ! eof
    98 
    99         file.close();
    100         return true;
    101 } // jones reader
    102 
    103 // jones writer
    104 bool JonesFileFormat::write(QFile& file, const Deck& deck) const {
    105         qDebug() << "Jones writing";
    106 
    107         if(!file.isOpen()) {
    108                 // oeffne Datei
    109                 if(! file.open(QIODevice::WriteOnly)) {
    110                         qDebug() << "Failed to open file: " << file.errorString();
    111                         return false;
    112                 }
    113         }
    114 
    115         int col_length = 80;
    116 
    117         // Write out file prefix
    118         qDebug() << "Beginning Jones writing";
    119         file.putChar('H');
    120         file.putChar('8');
    121         file.putChar(col_length==80 ? '0' : '2');
    122 
    123         //QVector::iterator i;
    124 
    125         //for(i = begin(); i != end(); i++ ) {
    126         for(int i=0; i < deck.count(); i++) {
    127                 // iterate throught the Cards
    128                 // erhmm... write a header...
    129                 file.putChar(0x80);
    130                 file.putChar(0x80);
    131                 file.putChar(0x80);
    132 
    133                 //int cur_col = 0;
    134                 //int max_col = i->col_length;
    135 
    136                 //while(cur_col < max_col) {
    137                 for(int cur_col = 0; cur_col < 80; ) {
    138                         char first, second, third;
    139 
    140                         int even = jones_column_to_integer( deck.at(i).get(cur_col++) );
    141                         int odd = jones_column_to_integer( deck.at(i).get(cur_col++) );
    142 
    143                         first = even >> 4;
    144                         second = ((even & 017) << 4) | (odd >> 8);
    145                         third = odd & 00377;
    146 
    147                         file.putChar(first);
    148                         file.putChar(second);
    149                         file.putChar(third);
    150                 } // while columns
    151         } // for cards
    152 
    153         file.close();
    154         qDebug() << "Jones File written.";
    155         return true; // done.
    156 } // jones writer
    157 
    158 /**
    159  * Like Douglas Jones says in his punchcard proposal:
    160  *
    161  *     Top                  Bottom
    162  *       _ _ _ _ _ _ _ _ _ _ _ _
    163  *      |_|_|_|_|_|_|_|_|_|_|_|_|
    164  *     12 11 0 1 2 3 4 5 6 7 8 9
    165  *      |     |                 |
    166  *      |Zone |     Numeric     |
    167  *
    168  **/
    169 int JonesFileFormat::jones_column_to_integer(const Column& col) {
    170         static const int Mapping[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 14, 10, 11 };
    171         // where 14 is a dummy position outside the range since column[10] is also
    172         // a dummy position ;-)
    173 
    174         int r;
    175         //             das hier sollte im Idealfall gleich sein ;-)
    176         for(int i = 0; i < col.size() && i < (int)sizeof(Mapping); i++)
    177                 r |= (col[i] << Mapping[i]);
    178         return r;
    179 }
    180 
    181 Column JonesFileFormat::jones_integer_to_column(int data) {
    182         static const int Mapping[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 14, 10, 11 };
    183         // where 14 is a dummy position outside the range since column[10] is also
    184         // a dummy position ;-)
    185 
    186         // this is just the inverse...
    187         Column r;
    188         for(int i = 0; i < (int)sizeof(Mapping); i++) {
    189                 r[i] = ( (1 << Mapping[i]) & data != 0 );
    190         }
    191         return r;
    192 }
  • punch-card-project/trunk/punch-card-editor/src/qpunchcard/format.h

    r52 r59  
    99        class FileFormat;
    1010        class FileFormatFactory;
     11
     12        class Deck;
    1113};
    1214
    1315#include "qpunchcard/card.h"
    14 #include "qpunchcard/deck.h"
     16// #include "qpunchcard/deck.h" // nach unten verschoben, damit bloeder cc kompiliert
    1517
    1618namespace QPunchCard {
    1719
    1820class FileFormat {
     21        QString name;
     22        friend class FileFormatFactory;
    1923public:
    2024        virtual ~FileFormat() {}
    21         virtual bool write(QFile& /* target */, const Deck& /* source */) const = 0;
    22         virtual bool read(QFile& /* source */, Deck& /* target */) const = 0;
     25        virtual bool write(QFile& /* target */, const Deck* /* source */) const { qDebug("Default FileFormat write!"); return false; }
     26        virtual bool read(QFile& /* source */, Deck* /* target */) const { qDebug("Default FileFormat read!"); return false; }
     27        const QString& getName() const { return name; }
     28        bool isNull() const { return name.isNull(); }
    2329};
    2430
     
    2632public:
    2733        static QList<QString> availableFormats();
    28         static const FileFormat* createFormat(const QString& name);
     34        static FileFormat createFormat(const QString& name);
    2935        static QString autoDetectFormat(const QFile& file);
    3036};
    3137
    3238/****************************************************************************
    33   FileFormat (I/O) implementations
     39  FileFormat (I/O) implementations (see jones.h for the most important one)
    3440 ***************************************************************************/
    35 
    36 class JonesFileFormat : public FileFormat {
    37 public:
    38         static int jones_column_to_integer(const Column& col);
    39         static Column jones_integer_to_column(int integer);
    40 
    41         bool write(QFile& target, const Deck& source) const;
    42         bool read(QFile& source, Deck& target) const;
    43 };
    4441
    4542class PunchCardMarkupLanguageFormat : public FileFormat {
    4643public:
    47         bool write(QFile& target, const Deck& source) const { return false; }
    48         bool read(QFile& source, Deck& target) const { return false; }
     44        bool write(QFile& target, const Deck* source) const { return false; }
     45        bool read(QFile& source, Deck* target) const { return false; }
    4946};
    5047
    5148}; // namespace QPunchCard
    5249
     50// hier eingebunden
     51#include "qpunchcard/deck.h"
    5352
    5453#endif // FORMAT_H
  • punch-card-project/trunk/punch-card-editor/src/src.pro

    r58 r59  
    11TEMPLATE = app
    2 
    32DESTDIR = ../bin
    43MOC_DIR = ../bin/moc
    54OBJECTS_DIR = ../bin/obj
    6 
    75RESOURCES = ../shared/files.qrc
    86
     7# (Bugfix) Includepath for Qt Creator/4.6 win
     8INCLUDEPATH += .. \
     9    . \
     10    src
     11
    912# INCLUDEPATH += ../../protocols/documation-m200
     13CONFIG += warn_off
     14CONFIG += debug
    1015
    11 CONFIG += warn_off
    12 
    13 CONFIG += debug
    14 #CONFIG += release
    15 
    16 HEADERS += \
    17     app/mainwindow.h \
     16# CONFIG += release
     17# CONFIG += static
     18HEADERS += app/mainwindow.h \
    1819    deckviewer/cardeditor.h \
    1920    deckviewer/navigatordock.h \
     
    2324    qpunchcard/deck.h \
    2425    qpunchcard/format.h \
     26    qpunchcard/jones.h \
    2527    qpunchcard/widget.h \
    2628    text/cardcodes.h \
     
    2931    text/editordock.h \
    3032    driver/driver.h
    31 
    32 SOURCES += \
    33     app/main.cc \
     33SOURCES += app/main.cc \
    3434    app/mainwindow.cc \
    3535    app/mainwindow.ui.cc \
     
    4141    qpunchcard/deck.cc \
    4242    qpunchcard/format.cc \
     43    qpunchcard/jones.cc \
    4344    qpunchcard/widget.cc \
    4445    text/codec.cc \
     
    4647    text/editordock.cc \
    4748    driver/driver.cc
    48 
    4949include( driver/documation-m200-client.pri )
  • punch-card-project/trunk/punch-card-editor/src/src.pro.user

    r58 r59  
    33 <data>
    44  <variable>RunConfiguration0-Arguments</variable>
    5   <valuelist type="QVariantList" />
     5  <valuelist type="QVariantList"/>
    66 </data>
    77 <data>
    88  <variable>RunConfiguration0-BaseEnvironmentBase</variable>
    9   <value type="int" >2</value>
     9  <value type="int">2</value>
    1010 </data>
    1111 <data>
    1212  <variable>RunConfiguration0-Executable</variable>
    13   <value type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/bin/src</value>
     13  <value type="QString">C:\Dokumente und Einstellungen\Physik\Desktop\punch-card-project\punch-card-editor\bin\src.exe</value>
    1414 </data>
    1515 <data>
    1616  <variable>RunConfiguration0-RunConfiguration.name</variable>
    17   <value type="QString" >Führe /mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/bin/src aus</value>
     17  <value type="QString">Führe C:\Dokumente und Einstellungen\Physik\Desktop\punch-card-project\punch-card-editor\bin\src.exe aus</value>
    1818 </data>
    1919 <data>
    2020  <variable>RunConfiguration0-UseTerminal</variable>
    21   <value type="bool" >false</value>
     21  <value type="bool">false</value>
    2222 </data>
    2323 <data>
    2424  <variable>RunConfiguration0-UserEnvironmentChanges</variable>
    25   <valuelist type="QVariantList" />
     25  <valuelist type="QVariantList"/>
    2626 </data>
    2727 <data>
    2828  <variable>RunConfiguration0-UserName</variable>
    29   <value type="QString" ></value>
     29  <value type="QString"></value>
    3030 </data>
    3131 <data>
    3232  <variable>RunConfiguration0-UserSetName</variable>
    33   <value type="bool" >false</value>
     33  <value type="bool">false</value>
    3434 </data>
    3535 <data>
    3636  <variable>RunConfiguration0-WorkingDirectory</variable>
    37   <value type="QString" >$BUILDDIR</value>
     37  <value type="QString">$BUILDDIR</value>
    3838 </data>
    3939 <data>
    4040  <variable>RunConfiguration0-type</variable>
    41   <value type="QString" >ProjectExplorer.CustomExecutableRunConfiguration</value>
     41  <value type="QString">ProjectExplorer.CustomExecutableRunConfiguration</value>
    4242 </data>
    4343 <data>
    4444  <variable>RunConfiguration1-BaseEnvironmentBase</variable>
    45   <value type="int" >2</value>
     45  <value type="int">2</value>
    4646 </data>
    4747 <data>
    4848  <variable>RunConfiguration1-CommandLineArguments</variable>
    49   <valuelist type="QVariantList" />
     49  <valuelist type="QVariantList"/>
    5050 </data>
    5151 <data>
    5252  <variable>RunConfiguration1-ProFile</variable>
    53   <value type="QString" >src.pro</value>
     53  <value type="QString">src.pro</value>
    5454 </data>
    5555 <data>
    5656  <variable>RunConfiguration1-RunConfiguration.name</variable>
    57   <value type="QString" >src</value>
     57  <value type="QString">src</value>
    5858 </data>
    5959 <data>
    6060  <variable>RunConfiguration1-UseDyldImageSuffix</variable>
    61   <value type="bool" >false</value>
     61  <value type="bool">false</value>
    6262 </data>
    6363 <data>
    6464  <variable>RunConfiguration1-UseTerminal</variable>
    65   <value type="bool" >false</value>
     65  <value type="bool">false</value>
    6666 </data>
    6767 <data>
    6868  <variable>RunConfiguration1-UserEnvironmentChanges</variable>
    69   <valuelist type="QVariantList" />
     69  <valuelist type="QVariantList"/>
    7070 </data>
    7171 <data>
    7272  <variable>RunConfiguration1-UserSetName</variable>
    73   <value type="bool" >false</value>
     73  <value type="bool">false</value>
    7474 </data>
    7575 <data>
    7676  <variable>RunConfiguration1-UserSetWorkingDirectory</variable>
    77   <value type="bool" >false</value>
     77  <value type="bool">false</value>
    7878 </data>
    7979 <data>
    8080  <variable>RunConfiguration1-UserWorkingDirectory</variable>
    81   <value type="QString" ></value>
     81  <value type="QString"></value>
    8282 </data>
    8383 <data>
    8484  <variable>RunConfiguration1-type</variable>
    85   <value type="QString" >Qt4ProjectManager.Qt4RunConfiguration</value>
     85  <value type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
    8686 </data>
    8787 <data>
    8888  <variable>activeRunConfiguration</variable>
    89   <value type="int" >0</value>
     89  <value type="int">0</value>
    9090 </data>
    9191 <data>
    9292  <variable>activebuildconfiguration</variable>
    93   <value type="QString" >Debug</value>
     93  <value type="QString">Debug</value>
    9494 </data>
    9595 <data>
    9696  <variable>buildConfiguration-Debug</variable>
    97   <valuemap type="QVariantMap" >
    98    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
    99    <value key="QtVersionId" type="int" >0</value>
    100    <value key="ToolChain" type="int" >0</value>
    101    <value key="addQDumper" type="" ></value>
    102    <value key="buildConfiguration" type="int" >2</value>
    103    <value key="buildDirectory" type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src</value>
     97  <valuemap type="QVariantMap">
     98   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
     99   <value key="QtVersionId" type="int">0</value>
     100   <value key="ToolChain" type="int">2</value>
     101   <value key="addQDumper" type=""></value>
     102   <value key="buildConfiguration" type="int">2</value>
     103   <value key="buildDirectory" type="QString">/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src</value>
    104104  </valuemap>
    105105 </data>
    106106 <data>
    107107  <variable>buildConfiguration-Release</variable>
    108   <valuemap type="QVariantMap" >
    109    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Release</value>
    110    <value key="QtVersionId" type="int" >0</value>
    111    <value key="addQDumper" type="" ></value>
    112    <value key="buildConfiguration" type="int" >0</value>
     108  <valuemap type="QVariantMap">
     109   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
     110   <value key="QtVersionId" type="int">0</value>
     111   <value key="ToolChain" type="int">2</value>
     112   <value key="addQDumper" type=""></value>
     113   <value key="buildConfiguration" type="int">0</value>
    113114  </valuemap>
    114115 </data>
    115116 <data>
    116117  <variable>buildconfiguration-Debug-buildstep0</variable>
    117   <valuemap type="QVariantMap" >
    118    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
    119    <valuelist key="abstractProcess.Environment" type="QVariantList" >
    120     <value type="QString" >ANT_HOME=/usr/share/ant</value>
    121     <value type="QString" >CLASSPATH=.</value>
    122     <value type="QString" >CONFIG_PROTECT=/usr/kde/4.2/share/config /usr/kde/4.2/env /usr/kde/4.2/shutdown /usr/share/config /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown</value>
    123     <value type="QString" >CONFIG_PROTECT_MASK=/etc/sandbox.d /etc/env.d/java/ /etc/php/cli-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/apache2-php5/ext-active/ /etc/udev/rules.d /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/revdep-rebuild</value>
    124     <value type="QString" >CVS_RSH=ssh</value>
    125     <value type="QString" >DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-vStWvGfPi4,guid=f13e2f54c7de3a252ce1974d4b40914d</value>
    126     <value type="QString" >DCCC_PATH=/usr/lib/distcc/bin</value>
    127     <value type="QString" >DESKTOP_SESSION=xfce</value>
    128     <value type="QString" >DESKTOP_STARTUP_ID=</value>
    129     <value type="QString" >DISPLAY=:0.0</value>
    130     <value type="QString" >DISTCC_LOG=</value>
    131     <value type="QString" >DISTCC_VERBOSE=0</value>
    132     <value type="QString" >DM_CONTROL=/var/run/xdmctl</value>
    133     <value type="QString" >EDITOR=/bin/nano</value>
    134     <value type="QString" >GCC_SPECS=</value>
    135     <value type="QString" >GDK_USE_XFT=1</value>
    136     <value type="QString" >GENERATION=2</value>
    137     <value type="QString" >GLADE_CATALOG_PATH=:</value>
    138     <value type="QString" >GLADE_MODULE_PATH=:</value>
    139     <value type="QString" >GLADE_PIXMAP_PATH=:</value>
    140     <value type="QString" >GTK_PATH=:/usr/lib/gtk-2.0</value>
    141     <value type="QString" >HOME=/home/sven</value>
    142     <value type="QString" >INFOPATH=/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info:/usr/share/info/emacs-21</value>
    143     <value type="QString" >JAVAC=/home/sven/.gentoo/java-config-2/current-user-vm/bin/javac</value>
    144     <value type="QString" >JAVA_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    145     <value type="QString" >JDK_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    146     <value type="QString" >LADSPA_PATH=/usr/lib/ladspa</value>
    147     <value type="QString" >LANG=de_DE</value>
    148     <value type="QString" >LC_ALL=de_DE</value>
    149     <value type="QString" >LESS=-R -M --shift 5</value>
    150     <value type="QString" >LESSOPEN=|lesspipe.sh %s</value>
    151     <value type="QString" >LIBGLADE_MODULE_PATH=:/usr/lib/libglade/2.0</value>
    152     <value type="QString" >LOGNAME=sven</value>
    153     <value type="QString" >MANPATH=/home/sven/.gentoo/java-config-2/current-user-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/lib/php5/man/:/usr/kde/4.2/share/man:/usr/kde/3.5/share/man:/usr/qt/3/doc/man:/opt/opera/share/man</value>
    154     <value type="QString" >OPENGL_PROFILE=nvidia</value>
    155     <value type="QString" >PAGER=/usr/bin/less</value>
    156     <value type="QString" >PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/4.2/bin:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/games/bin</value>
    157     <value type="QString" >PKG_CONFIG_PATH=/usr/kde/4.2/lib/pkgconfig:/usr/qt/3/lib/pkgconfig</value>
    158     <value type="QString" >PRELINK_PATH_MASK=/usr/lib/gstreamer-0.8</value>
    159     <value type="QString" >PWD=/home/sven</value>
    160     <value type="QString" >QMAKESPEC=linux-g++</value>
    161     <value type="QString" >QTDIR=/usr</value>
    162     <value type="QString" >SANE_CONFIG_DIR=/etc/sane.d</value>
    163     <value type="QString" >SESSION_MANAGER=local/sveni:@/tmp/.ICE-unix/3877,unix/sveni:/tmp/.ICE-unix/3877</value>
    164     <value type="QString" >SHELL=/bin/bash</value>
    165     <value type="QString" >SHLVL=1</value>
    166     <value type="QString" >SSH_AGENT_PID=3869</value>
    167     <value type="QString" >SSH_AUTH_SOCK=/tmp/ssh-IZwkod3868/agent.3868</value>
    168     <value type="QString" >USB_DEVFS_PATH=/dev/bus/usb</value>
    169     <value type="QString" >USER=sven</value>
    170     <value type="QString" >VMHANDLE=blackdown-jdk-1.4.2</value>
    171     <value type="QString" >WINDOWPATH=7</value>
    172     <value type="QString" >XDG_CONFIG_DIRS=/etc/xdg</value>
    173     <value type="QString" >XDG_DATA_DIRS=/usr/local/share:/usr/kde/4.2/share:/usr/kde/3.5/share:/usr/share:/usr/share</value>
    174     <value type="QString" >XDG_SESSION_COOKIE=4ca7d15657433fffff2f84004717d7fc-1262522700.921936-30255898</value>
    175     <value type="QString" >XDM_MANAGED=method=classic</value>
    176     <value type="QString" >_=/usr/bin/xfce4-session</value>
    177    </valuelist>
    178    <valuelist key="abstractProcess.arguments" type="QVariantList" >
    179     <value type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src/src.pro</value>
    180     <value type="QString" >-spec</value>
    181     <value type="QString" >/usr/share/qt4/mkspecs/linux-g++</value>
    182     <value type="QString" >-r</value>
    183     <value type="QString" >CONFIG+=debug</value>
    184    </valuelist>
    185    <value key="abstractProcess.command" type="QString" >/usr/bin/qmake</value>
    186    <value key="abstractProcess.enabled" type="bool" >false</value>
    187    <value key="abstractProcess.workingDirectory" type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src</value>
    188    <valuelist key="qmakeArgs" type="QVariantList" />
     118  <valuemap type="QVariantMap">
     119   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
     120   <valuelist key="abstractProcess.Environment" type="QVariantList">
     121    <value type="QString">ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users</value>
     122    <value type="QString">APPDATA=C:\Dokumente und Einstellungen\Physik\Anwendungsdaten</value>
     123    <value type="QString">CARBON_MEM_DISABLE=1</value>
     124    <value type="QString">CLASSPATH=.;C:\Programme\Java\jre6\lib\ext\QTJava.zip</value>
     125    <value type="QString">CLIENTNAME=Console</value>
     126    <value type="QString">COMMONPROGRAMFILES=C:\Programme\Gemeinsame Dateien</value>
     127    <value type="QString">COMPUTERNAME=ALBERTEINSTEIN</value>
     128    <value type="QString">COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
     129    <value type="QString">FP_NO_HOST_CHECK=NO</value>
     130    <value type="QString">HOMEDRIVE=C:</value>
     131    <value type="QString">HOMEPATH=\Dokumente und Einstellungen\Physik</value>
     132    <value type="QString">LOGONSERVER=\\ALBERTEINSTEIN</value>
     133    <value type="QString">NUMBER_OF_PROCESSORS=2</value>
     134    <value type="QString">OS=Windows_NT</value>
     135    <value type="QString">PATH=C:\Qt\2009.05\mingw\bin;C:\Qt\2009.05\qt\bin;C:\WinAVR\bin;C:\WinAVR\utils\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\TortoiseSVN\bin;C:\Programme\ooRexx;C:\Programme\Java\jdk1.6.0_17\bin;C:\Programme\QuickTime\QTSystem\;C:\Programme\OpenVPN\bin</value>
     136    <value type="QString">PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.REX</value>
     137    <value type="QString">PROCESSOR_ARCHITECTURE=x86</value>
     138    <value type="QString">PROCESSOR_IDENTIFIER=x86 Family 6 Model 28 Stepping 2, GenuineIntel</value>
     139    <value type="QString">PROCESSOR_LEVEL=6</value>
     140    <value type="QString">PROCESSOR_REVISION=1c02</value>
     141    <value type="QString">PROGRAMFILES=C:\Programme</value>
     142    <value type="QString">QTDIR=C:/Qt/2009.05/qt</value>
     143    <value type="QString">QTJAVA=C:\Programme\Java\jre6\lib\ext\QTJava.zip</value>
     144    <value type="QString">REXX_HOME=C:\Programme\ooRexx</value>
     145    <value type="QString">SESSIONNAME=Console</value>
     146    <value type="QString">SYSTEMDRIVE=C:</value>
     147    <value type="QString">SYSTEMROOT=C:\WINDOWS</value>
     148    <value type="QString">TEMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     149    <value type="QString">TMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     150    <value type="QString">USERDOMAIN=ALBERTEINSTEIN</value>
     151    <value type="QString">USERNAME=Physik</value>
     152    <value type="QString">USERPROFILE=C:\Dokumente und Einstellungen\Physik</value>
     153    <value type="QString">WINDIR=C:\WINDOWS</value>
     154   </valuelist>
     155   <valuelist key="abstractProcess.arguments" type="QVariantList">
     156    <value type="QString">C:/Dokumente und Einstellungen/Physik/Desktop/punch-card-project/punch-card-editor/src/src.pro</value>
     157    <value type="QString">-spec</value>
     158    <value type="QString">win32-g++</value>
     159    <value type="QString">-r</value>
     160   </valuelist>
     161   <value key="abstractProcess.command" type="QString">c:/qt/2009.05/qt/bin/qmake.exe</value>
     162   <value key="abstractProcess.enabled" type="bool">false</value>
     163   <value key="abstractProcess.workingDirectory" type="QString">C:/Dokumente und Einstellungen/Physik/Desktop/punch-card-project/punch-card-editor/src</value>
     164   <valuelist key="qmakeArgs" type="QVariantList"/>
    189165  </valuemap>
    190166 </data>
    191167 <data>
    192168  <variable>buildconfiguration-Debug-buildstep1</variable>
    193   <valuemap type="QVariantMap" >
    194    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
    195    <valuelist key="abstractProcess.Environment" type="QVariantList" >
    196     <value type="QString" >ANT_HOME=/usr/share/ant</value>
    197     <value type="QString" >CLASSPATH=.</value>
    198     <value type="QString" >CONFIG_PROTECT=/usr/kde/4.2/share/config /usr/kde/4.2/env /usr/kde/4.2/shutdown /usr/share/config /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown</value>
    199     <value type="QString" >CONFIG_PROTECT_MASK=/etc/sandbox.d /etc/env.d/java/ /etc/php/cli-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/apache2-php5/ext-active/ /etc/udev/rules.d /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/revdep-rebuild</value>
    200     <value type="QString" >CVS_RSH=ssh</value>
    201     <value type="QString" >DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-vStWvGfPi4,guid=f13e2f54c7de3a252ce1974d4b40914d</value>
    202     <value type="QString" >DCCC_PATH=/usr/lib/distcc/bin</value>
    203     <value type="QString" >DESKTOP_SESSION=xfce</value>
    204     <value type="QString" >DESKTOP_STARTUP_ID=</value>
    205     <value type="QString" >DISPLAY=:0.0</value>
    206     <value type="QString" >DISTCC_LOG=</value>
    207     <value type="QString" >DISTCC_VERBOSE=0</value>
    208     <value type="QString" >DM_CONTROL=/var/run/xdmctl</value>
    209     <value type="QString" >EDITOR=/bin/nano</value>
    210     <value type="QString" >GCC_SPECS=</value>
    211     <value type="QString" >GDK_USE_XFT=1</value>
    212     <value type="QString" >GENERATION=2</value>
    213     <value type="QString" >GLADE_CATALOG_PATH=:</value>
    214     <value type="QString" >GLADE_MODULE_PATH=:</value>
    215     <value type="QString" >GLADE_PIXMAP_PATH=:</value>
    216     <value type="QString" >GTK_PATH=:/usr/lib/gtk-2.0</value>
    217     <value type="QString" >HOME=/home/sven</value>
    218     <value type="QString" >INFOPATH=/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info:/usr/share/info/emacs-21</value>
    219     <value type="QString" >JAVAC=/home/sven/.gentoo/java-config-2/current-user-vm/bin/javac</value>
    220     <value type="QString" >JAVA_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    221     <value type="QString" >JDK_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    222     <value type="QString" >LADSPA_PATH=/usr/lib/ladspa</value>
    223     <value type="QString" >LANG=de_DE</value>
    224     <value type="QString" >LC_ALL=de_DE</value>
    225     <value type="QString" >LESS=-R -M --shift 5</value>
    226     <value type="QString" >LESSOPEN=|lesspipe.sh %s</value>
    227     <value type="QString" >LIBGLADE_MODULE_PATH=:/usr/lib/libglade/2.0</value>
    228     <value type="QString" >LOGNAME=sven</value>
    229     <value type="QString" >MANPATH=/home/sven/.gentoo/java-config-2/current-user-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/lib/php5/man/:/usr/kde/4.2/share/man:/usr/kde/3.5/share/man:/usr/qt/3/doc/man:/opt/opera/share/man</value>
    230     <value type="QString" >OPENGL_PROFILE=nvidia</value>
    231     <value type="QString" >PAGER=/usr/bin/less</value>
    232     <value type="QString" >PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/4.2/bin:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/games/bin</value>
    233     <value type="QString" >PKG_CONFIG_PATH=/usr/kde/4.2/lib/pkgconfig:/usr/qt/3/lib/pkgconfig</value>
    234     <value type="QString" >PRELINK_PATH_MASK=/usr/lib/gstreamer-0.8</value>
    235     <value type="QString" >PWD=/home/sven</value>
    236     <value type="QString" >QMAKESPEC=linux-g++</value>
    237     <value type="QString" >QTDIR=/usr</value>
    238     <value type="QString" >SANE_CONFIG_DIR=/etc/sane.d</value>
    239     <value type="QString" >SESSION_MANAGER=local/sveni:@/tmp/.ICE-unix/3877,unix/sveni:/tmp/.ICE-unix/3877</value>
    240     <value type="QString" >SHELL=/bin/bash</value>
    241     <value type="QString" >SHLVL=1</value>
    242     <value type="QString" >SSH_AGENT_PID=3869</value>
    243     <value type="QString" >SSH_AUTH_SOCK=/tmp/ssh-IZwkod3868/agent.3868</value>
    244     <value type="QString" >USB_DEVFS_PATH=/dev/bus/usb</value>
    245     <value type="QString" >USER=sven</value>
    246     <value type="QString" >VMHANDLE=blackdown-jdk-1.4.2</value>
    247     <value type="QString" >WINDOWPATH=7</value>
    248     <value type="QString" >XDG_CONFIG_DIRS=/etc/xdg</value>
    249     <value type="QString" >XDG_DATA_DIRS=/usr/local/share:/usr/kde/4.2/share:/usr/kde/3.5/share:/usr/share:/usr/share</value>
    250     <value type="QString" >XDG_SESSION_COOKIE=4ca7d15657433fffff2f84004717d7fc-1262522700.921936-30255898</value>
    251     <value type="QString" >XDM_MANAGED=method=classic</value>
    252     <value type="QString" >_=/usr/bin/xfce4-session</value>
    253    </valuelist>
    254    <value key="abstractProcess.IgnoreReturnValue" type="bool" >false</value>
    255    <valuelist key="abstractProcess.arguments" type="QVariantList" >
    256     <value type="QString" >-w</value>
    257    </valuelist>
    258    <value key="abstractProcess.command" type="QString" >/usr/bin/make</value>
    259    <value key="abstractProcess.enabled" type="bool" >true</value>
    260    <value key="abstractProcess.workingDirectory" type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src</value>
     169  <valuemap type="QVariantMap">
     170   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
     171   <valuelist key="abstractProcess.Environment" type="QVariantList">
     172    <value type="QString">ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users</value>
     173    <value type="QString">APPDATA=C:\Dokumente und Einstellungen\Physik\Anwendungsdaten</value>
     174    <value type="QString">CARBON_MEM_DISABLE=1</value>
     175    <value type="QString">CLASSPATH=.;C:\Programme\Java\jre6\lib\ext\QTJava.zip</value>
     176    <value type="QString">CLIENTNAME=Console</value>
     177    <value type="QString">COMMONPROGRAMFILES=C:\Programme\Gemeinsame Dateien</value>
     178    <value type="QString">COMPUTERNAME=ALBERTEINSTEIN</value>
     179    <value type="QString">COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
     180    <value type="QString">FP_NO_HOST_CHECK=NO</value>
     181    <value type="QString">HOMEDRIVE=C:</value>
     182    <value type="QString">HOMEPATH=\Dokumente und Einstellungen\Physik</value>
     183    <value type="QString">LOGONSERVER=\\ALBERTEINSTEIN</value>
     184    <value type="QString">NUMBER_OF_PROCESSORS=2</value>
     185    <value type="QString">OS=Windows_NT</value>
     186    <value type="QString">PATH=C:\Qt\2009.05\mingw\bin;C:\Qt\2009.05\qt\bin;C:\WinAVR\bin;C:\WinAVR\utils\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\TortoiseSVN\bin;C:\Programme\ooRexx;C:\Programme\Java\jdk1.6.0_17\bin;C:\Programme\QuickTime\QTSystem\;C:\Programme\OpenVPN\bin</value>
     187    <value type="QString">PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.REX</value>
     188    <value type="QString">PROCESSOR_ARCHITECTURE=x86</value>
     189    <value type="QString">PROCESSOR_IDENTIFIER=x86 Family 6 Model 28 Stepping 2, GenuineIntel</value>
     190    <value type="QString">PROCESSOR_LEVEL=6</value>
     191    <value type="QString">PROCESSOR_REVISION=1c02</value>
     192    <value type="QString">PROGRAMFILES=C:\Programme</value>
     193    <value type="QString">QTDIR=C:/Qt/2009.05/qt</value>
     194    <value type="QString">QTJAVA=C:\Programme\Java\jre6\lib\ext\QTJava.zip</value>
     195    <value type="QString">REXX_HOME=C:\Programme\ooRexx</value>
     196    <value type="QString">SESSIONNAME=Console</value>
     197    <value type="QString">SYSTEMDRIVE=C:</value>
     198    <value type="QString">SYSTEMROOT=C:\WINDOWS</value>
     199    <value type="QString">TEMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     200    <value type="QString">TMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     201    <value type="QString">USERDOMAIN=ALBERTEINSTEIN</value>
     202    <value type="QString">USERNAME=Physik</value>
     203    <value type="QString">USERPROFILE=C:\Dokumente und Einstellungen\Physik</value>
     204    <value type="QString">WINDIR=C:\WINDOWS</value>
     205   </valuelist>
     206   <value key="abstractProcess.IgnoreReturnValue" type="bool">false</value>
     207   <valuelist key="abstractProcess.arguments" type="QVariantList">
     208    <value type="QString">-w</value>
     209   </valuelist>
     210   <value key="abstractProcess.command" type="QString">C:/Qt/2009.05/mingw/bin/mingw32-make.exe</value>
     211   <value key="abstractProcess.enabled" type="bool">true</value>
     212   <value key="abstractProcess.workingDirectory" type="QString">C:/Dokumente und Einstellungen/Physik/Desktop/punch-card-project/punch-card-editor/src</value>
    261213  </valuemap>
    262214 </data>
    263215 <data>
    264216  <variable>buildconfiguration-Debug-cleanstep0</variable>
    265   <valuemap type="QVariantMap" >
    266    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Debug</value>
    267    <valuelist key="abstractProcess.Environment" type="QVariantList" >
    268     <value type="QString" >ANT_HOME=/usr/share/ant</value>
    269     <value type="QString" >CLASSPATH=.</value>
    270     <value type="QString" >CONFIG_PROTECT=/usr/kde/4.2/share/config /usr/kde/4.2/env /usr/kde/4.2/shutdown /usr/share/config /usr/kde/3.5/share/config /usr/kde/3.5/env /usr/kde/3.5/shutdown</value>
    271     <value type="QString" >CONFIG_PROTECT_MASK=/etc/sandbox.d /etc/env.d/java/ /etc/php/cli-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/apache2-php5/ext-active/ /etc/udev/rules.d /etc/fonts/fonts.conf /etc/gconf /etc/terminfo /etc/texmf/web2c /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/revdep-rebuild</value>
    272     <value type="QString" >CVS_RSH=ssh</value>
    273     <value type="QString" >DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-al0AsHPXja,guid=4bd797857293243240627b514b3dc8f5</value>
    274     <value type="QString" >DCCC_PATH=/usr/lib/distcc/bin</value>
    275     <value type="QString" >DESKTOP_SESSION=xfce</value>
    276     <value type="QString" >DESKTOP_STARTUP_ID=</value>
    277     <value type="QString" >DISPLAY=:0.0</value>
    278     <value type="QString" >DISTCC_LOG=</value>
    279     <value type="QString" >DISTCC_VERBOSE=0</value>
    280     <value type="QString" >DM_CONTROL=/var/run/xdmctl</value>
    281     <value type="QString" >EDITOR=/bin/nano</value>
    282     <value type="QString" >GCC_SPECS=</value>
    283     <value type="QString" >GDK_USE_XFT=1</value>
    284     <value type="QString" >GENERATION=2</value>
    285     <value type="QString" >GLADE_CATALOG_PATH=:</value>
    286     <value type="QString" >GLADE_MODULE_PATH=:</value>
    287     <value type="QString" >GLADE_PIXMAP_PATH=:</value>
    288     <value type="QString" >GTK_PATH=:/usr/lib/gtk-2.0</value>
    289     <value type="QString" >HOME=/home/sven</value>
    290     <value type="QString" >INFOPATH=/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info:/usr/share/info/emacs-21</value>
    291     <value type="QString" >JAVAC=/home/sven/.gentoo/java-config-2/current-user-vm/bin/javac</value>
    292     <value type="QString" >JAVA_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    293     <value type="QString" >JDK_HOME=/home/sven/.gentoo/java-config-2/current-user-vm</value>
    294     <value type="QString" >LADSPA_PATH=/usr/lib/ladspa</value>
    295     <value type="QString" >LANG=de_DE</value>
    296     <value type="QString" >LANGUAGE=</value>
    297     <value type="QString" >LC_ALL=de_DE</value>
    298     <value type="QString" >LESS=-R -M --shift 5</value>
    299     <value type="QString" >LESSOPEN=|lesspipe.sh %s</value>
    300     <value type="QString" >LIBGLADE_MODULE_PATH=:/usr/lib/libglade/2.0</value>
    301     <value type="QString" >LOGNAME=sven</value>
    302     <value type="QString" >MANPATH=/home/sven/.gentoo/java-config-2/current-user-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/lib/php5/man/:/usr/kde/4.2/share/man:/usr/kde/3.5/share/man:/usr/qt/3/doc/man:/opt/opera/share/man</value>
    303     <value type="QString" >OPENGL_PROFILE=nvidia</value>
    304     <value type="QString" >PAGER=/usr/bin/less</value>
    305     <value type="QString" >PATH=/usr/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/4.2/bin:/usr/kde/3.5/bin:/usr/qt/3/bin:/usr/games/bin</value>
    306     <value type="QString" >PKG_CONFIG_PATH=/usr/kde/4.2/lib/pkgconfig:/usr/qt/3/lib/pkgconfig</value>
    307     <value type="QString" >PRELINK_PATH_MASK=/usr/lib/gstreamer-0.8</value>
    308     <value type="QString" >PWD=/home/sven</value>
    309     <value type="QString" >QMAKESPEC=linux-g++</value>
    310     <value type="QString" >QTDIR=/usr</value>
    311     <value type="QString" >SANE_CONFIG_DIR=/etc/sane.d</value>
    312     <value type="QString" >SESSION_MANAGER=local/sveni:@/tmp/.ICE-unix/3873,unix/sveni:/tmp/.ICE-unix/3873</value>
    313     <value type="QString" >SHELL=/bin/bash</value>
    314     <value type="QString" >SHLVL=1</value>
    315     <value type="QString" >SSH_AGENT_PID=3865</value>
    316     <value type="QString" >SSH_AUTH_SOCK=/tmp/ssh-saRMzq3864/agent.3864</value>
    317     <value type="QString" >USB_DEVFS_PATH=/dev/bus/usb</value>
    318     <value type="QString" >USER=sven</value>
    319     <value type="QString" >VMHANDLE=blackdown-jdk-1.4.2</value>
    320     <value type="QString" >WINDOWPATH=7</value>
    321     <value type="QString" >XDG_CONFIG_DIRS=/etc/xdg</value>
    322     <value type="QString" >XDG_DATA_DIRS=/usr/local/share:/usr/kde/4.2/share:/usr/kde/3.5/share:/usr/share:/usr/share</value>
    323     <value type="QString" >XDG_SESSION_COOKIE=4ca7d15657433fffff2f84004717d7fc-1262340341.91684-1518068440</value>
    324     <value type="QString" >XDM_MANAGED=method=classic</value>
    325     <value type="QString" >_=/usr/bin/xfce4-session</value>
    326    </valuelist>
    327    <value key="abstractProcess.IgnoreReturnValue" type="bool" >true</value>
    328    <valuelist key="abstractProcess.arguments" type="QVariantList" >
    329     <value type="QString" >clean</value>
    330     <value type="QString" >-w</value>
    331    </valuelist>
    332    <value key="abstractProcess.command" type="QString" >/usr/bin/make</value>
    333    <value key="abstractProcess.enabled" type="bool" >true</value>
    334    <value key="abstractProcess.workingDirectory" type="QString" >/mnt/data/Programme/technikum29-projects/punch-card-project/trunk/punch-card-editor/src</value>
    335    <value key="cleanConfig" type="bool" >true</value>
    336    <valuelist key="makeargs" type="QVariantList" >
    337     <value type="QString" >clean</value>
     217  <valuemap type="QVariantMap">
     218   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
     219   <valuelist key="abstractProcess.Environment" type="QVariantList">
     220    <value type="QString">ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users</value>
     221    <value type="QString">APPDATA=C:\Dokumente und Einstellungen\Physik\Anwendungsdaten</value>
     222    <value type="QString">CARBON_MEM_DISABLE=1</value>
     223    <value type="QString">CLIENTNAME=Console</value>
     224    <value type="QString">COMMONPROGRAMFILES=C:\Programme\Gemeinsame Dateien</value>
     225    <value type="QString">COMPUTERNAME=ALBERTEINSTEIN</value>
     226    <value type="QString">COMSPEC=C:\WINDOWS\system32\cmd.exe</value>
     227    <value type="QString">FP_NO_HOST_CHECK=NO</value>
     228    <value type="QString">HOMEDRIVE=C:</value>
     229    <value type="QString">HOMEPATH=\Dokumente und Einstellungen\Physik</value>
     230    <value type="QString">LOGONSERVER=\\ALBERTEINSTEIN</value>
     231    <value type="QString">NUMBER_OF_PROCESSORS=2</value>
     232    <value type="QString">OS=Windows_NT</value>
     233    <value type="QString">PATH=C:\Qt\2009.05\mingw\bin;C:\Qt\2009.05\qt\bin;C:\WinAVR\bin;C:\WinAVR\utils\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Programme\TortoiseSVN\bin;C:\Programme\ooRexx;C:\Programme\Java\jdk1.6.0_17\bin;C:\Programme\OpenVPN\bin</value>
     234    <value type="QString">PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.REX</value>
     235    <value type="QString">PROCESSOR_ARCHITECTURE=x86</value>
     236    <value type="QString">PROCESSOR_IDENTIFIER=x86 Family 6 Model 28 Stepping 2, GenuineIntel</value>
     237    <value type="QString">PROCESSOR_LEVEL=6</value>
     238    <value type="QString">PROCESSOR_REVISION=1c02</value>
     239    <value type="QString">PROGRAMFILES=C:\Programme</value>
     240    <value type="QString">QTDIR=C:/Qt/2009.05/qt</value>
     241    <value type="QString">REXX_HOME=C:\Programme\ooRexx</value>
     242    <value type="QString">SESSIONNAME=Console</value>
     243    <value type="QString">SYSTEMDRIVE=C:</value>
     244    <value type="QString">SYSTEMROOT=C:\WINDOWS</value>
     245    <value type="QString">TEMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     246    <value type="QString">TMP=C:\DOKUME~1\Physik\LOKALE~1\Temp</value>
     247    <value type="QString">USERDOMAIN=ALBERTEINSTEIN</value>
     248    <value type="QString">USERNAME=Physik</value>
     249    <value type="QString">USERPROFILE=C:\Dokumente und Einstellungen\Physik</value>
     250    <value type="QString">WINDIR=C:\WINDOWS</value>
     251   </valuelist>
     252   <value key="abstractProcess.IgnoreReturnValue" type="bool">true</value>
     253   <valuelist key="abstractProcess.arguments" type="QVariantList">
     254    <value type="QString">clean</value>
     255    <value type="QString">-w</value>
     256   </valuelist>
     257   <value key="abstractProcess.command" type="QString">C:/Qt/2009.05/mingw/bin/mingw32-make.exe</value>
     258   <value key="abstractProcess.enabled" type="bool">true</value>
     259   <value key="abstractProcess.workingDirectory" type="QString">C:/Dokumente und Einstellungen/Physik/Desktop/punch-card-project/punch-card-editor/src</value>
     260   <value key="cleanConfig" type="bool">true</value>
     261   <valuelist key="makeargs" type="QVariantList">
     262    <value type="QString">clean</value>
    338263   </valuelist>
    339264  </valuemap>
     
    341266 <data>
    342267  <variable>buildconfiguration-Release-buildstep0</variable>
    343   <valuemap type="QVariantMap" >
    344    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Release</value>
    345    <valuelist key="qmakeArgs" type="QVariantList" />
     268  <valuemap type="QVariantMap">
     269   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
     270   <valuelist key="qmakeArgs" type="QVariantList"/>
    346271  </valuemap>
    347272 </data>
    348273 <data>
    349274  <variable>buildconfiguration-Release-buildstep1</variable>
    350   <valuemap type="QVariantMap" >
    351    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Release</value>
     275  <valuemap type="QVariantMap">
     276   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
    352277  </valuemap>
    353278 </data>
    354279 <data>
    355280  <variable>buildconfiguration-Release-cleanstep0</variable>
    356   <valuemap type="QVariantMap" >
    357    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" >Release</value>
     281  <valuemap type="QVariantMap">
     282   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Release</value>
    358283  </valuemap>
    359284 </data>
    360285 <data>
    361286  <variable>buildconfigurations</variable>
    362   <valuelist type="QVariantList" >
    363    <value type="QString" >Debug</value>
    364    <value type="QString" >Release</value>
     287  <valuelist type="QVariantList">
     288   <value type="QString">Debug</value>
     289   <value type="QString">Release</value>
    365290  </valuelist>
    366291 </data>
    367292 <data>
    368293  <variable>buildstep0</variable>
    369   <valuemap type="QVariantMap" >
    370    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
    371    <value key="mkspec" type="QString" ></value>
     294  <valuemap type="QVariantMap">
     295   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
     296   <value key="mkspec" type="QString"></value>
    372297  </valuemap>
    373298 </data>
    374299 <data>
    375300  <variable>buildstep1</variable>
    376   <valuemap type="QVariantMap" >
    377    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
     301  <valuemap type="QVariantMap">
     302   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
    378303  </valuemap>
    379304 </data>
    380305 <data>
    381306  <variable>buildsteps</variable>
    382   <valuelist type="QVariantList" >
    383    <value type="QString" >trolltech.qt4projectmanager.qmake</value>
    384    <value type="QString" >trolltech.qt4projectmanager.make</value>
     307  <valuelist type="QVariantList">
     308   <value type="QString">trolltech.qt4projectmanager.qmake</value>
     309   <value type="QString">trolltech.qt4projectmanager.make</value>
    385310  </valuelist>
    386311 </data>
    387312 <data>
    388313  <variable>cleanstep0</variable>
    389   <valuemap type="QVariantMap" >
    390    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString" ></value>
    391    <value key="clean" type="bool" >true</value>
     314  <valuemap type="QVariantMap">
     315   <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString"></value>
     316   <value key="clean" type="bool">true</value>
    392317  </valuemap>
    393318 </data>
    394319 <data>
    395320  <variable>cleansteps</variable>
    396   <valuelist type="QVariantList" >
    397    <value type="QString" >trolltech.qt4projectmanager.make</value>
     321  <valuelist type="QVariantList">
     322   <value type="QString">trolltech.qt4projectmanager.make</value>
    398323  </valuelist>
    399324 </data>
    400325 <data>
    401326  <variable>defaultFileEncoding</variable>
    402   <value type="QByteArray" >System</value>
     327  <value type="QByteArray">System</value>
    403328 </data>
    404329 <data>
    405330  <variable>project</variable>
    406   <valuemap type="QVariantMap" />
     331  <valuemap type="QVariantMap"/>
    407332 </data>
    408333</qtcreator>
  • punch-card-project/trunk/punch-card-editor/src/text/codec.cc

    r58 r59  
    5454}
    5555
    56 CharArrayCodec::CharArrayCodec(const int* table, char illegal) : Codec(illegal) {
     56CharArrayCodec::CharArrayCodec(const int* table, char illegal, const QString& name) : Codec(illegal,name) {
    5757        d = new Data;
    5858        d->table = table;
     
    7777QList<QString> CodecFactory::availableCodecs() {
    7878        QList<QString> list;
    79         list << "o29_code" << "o29_ftn_code" << "o26_comm_code";
     79        list << "o29_code" << "o29_ftn_code" << "o26_comm_code" << "ebcdic_code";
    8080        return list;
    8181}
     
    8484        if(!CodecFactory::codec_cache.contains(name)) {
    8585                if("o29_code" == name)
    86                         CodecFactory::codec_cache[name] = new CharArrayCodec(o29_code, illegal);
     86                        CodecFactory::codec_cache[name] = new CharArrayCodec(o29_code, illegal,
     87                                "IBM 029 keypunch encoding (DEC's version)");
    8788                else if("o26_ftn_code" == name)
    88                         CodecFactory::codec_cache[name] = new CharArrayCodec(o26_ftn_code, illegal);
     89                        CodecFactory::codec_cache[name] = new CharArrayCodec(o26_ftn_code, illegal,
     90                                "IBM 026 keypunch encoding (subset)");
    8991                else if("o26_comm_code" == name)
    90                         CodecFactory::codec_cache[name] = new CharArrayCodec(o26_comm_code, illegal);
     92                        CodecFactory::codec_cache[name] = new CharArrayCodec(o26_comm_code, illegal,
     93                                "IBM 026 Common Code");
     94                else if("ebcdic_code" == name)
     95                        CodecFactory::codec_cache[name] = new CharArrayCodec(EBCDIC_code, illegal,
     96                                "FULL EBCDIC");
    9197                else {
    9298                        qDebug() << QString("Codec '%s' not supported!").arg(name);
  • punch-card-project/trunk/punch-card-editor/src/text/codec.h

    r58 r59  
    2323 **/
    2424class Codec {
     25        const QString& name;
     26
    2527public:
    2628        // soll const sein, weil Codec unveraenderbar *immer* das gleiche
     
    2931        const char illegal;
    3032        /// @param illegal_character Zeichen fuer nicht existente Zahlen
    31         Codec(char illegal_character = '~') : illegal(illegal_character) {}
    32         Codec(const Codec& other) : illegal(other.illegal) {}
     33        Codec(char illegal_character = '~', const QString& name = QString()) : illegal(illegal_character), name(name) {}
     34        Codec(const Codec& other) : illegal(other.illegal), name(other.name) {}
    3335        virtual ~Codec() {}
     36
     37        virtual const QString& getName() const { return name; }
     38
    3439        virtual char toAscii(const Column* col) const = 0;
    3540        virtual QString toAscii(const Card* target_card) const;
     
    6267
    6368public:
    64         CharArrayCodec(const int* table, char illegal = '~');// : Codec(illegal), table(table) {}
     69        CharArrayCodec(const int* table, char illegal = '~', const QString& name = QString());
    6570        CharArrayCodec(const CharArrayCodec& other) : Codec(other) {
    6671                d = other.d;
  • punch-card-project/trunk/punch-card-editor/src/text/editordock.cc

    r58 r59  
    77#include <QComboBox>
    88#include <QPushButton>
     9#include <QFileDialog>
     10#include <QMessageBox>
    911
    1012using namespace QPunchCard;
     
    6769}
    6870
     71const Codec* Text::EditorDock::getCodec() const {
     72        return editor->codec;
     73}
     74
     75QString Text::EditorDock::getText() const {
     76        return editor->toPlainText();
     77}
     78
    6979void Text::EditorDock::setCodec(QString by_name) {
    7080        // QSharedPointer: Durch Assignment wird das alte Objekt geloescht :-)
     
    7484}
    7585
     86bool Text::EditorDock::exportTextAs() {
     87        // show a funny `export text as` dialog
     88        QString new_filename = QFileDialog::getSaveFileName(main,
     89                tr("Export Card Text (%1)").arg(getCodec()->getName()),
     90                filename.isEmpty() ? QDir::homePath() : QFileInfo(filename).absolutePath(),
     91                tr("Plain Text File (*.txt);;Any File (*)"));
     92        if(new_filename.isEmpty())
     93                return false;
     94
     95        // save filename and go on exporting normally
     96        this->filename = new_filename;
     97        this->exportText();
     98}
     99
     100bool Text::EditorDock::exportText() {
     101        if(this->filename.isEmpty()) {
     102                return exportTextAs();
     103        }
     104
     105        QFile file(this->filename);
     106        // everything in one line ;-)
     107        if(!file.open( QIODevice::WriteOnly | QIODevice::Text ) ||
     108           (file.write( this->getText().toAscii() ) == -1)  ) {
     109                QMessageBox::critical(main, tr("Could not export to file"),
     110                                      tr("Plain text export to file %1 failed: %2").arg(filename).arg(file.errorString()));
     111                return false;
     112        } else {
     113                main->statusBar()->showMessage(tr("Successfully exported card text as %1 to %2 ").arg(getCodec()->getName()).arg(filename), 5000);
     114                return true;
     115        }
     116}
     117
    76118void Text::EditorDock::showTextConverterDialog() {
    77         qDebug("Text Converter Dialog... PENDING");
     119        QMessageBox::information(main, tr("Pending work"), tr("Well... the Text Converter Dialog hasn't been done yet..."));
    78120}
  • punch-card-project/trunk/punch-card-editor/src/text/editordock.h

    r52 r59  
    2323        Q_OBJECT
    2424
    25         App::MainWindow* main;
    26         Text::Editor* editor;
     25        App::MainWindow* main; // als links wegen Forward Declaration
     26        Text::Editor* editor;  // (unkomplette typen beim kompilieren)
    2727        QWidget* code_bar;
    2828        QWidget* color_bar;
     29        QString filename; // just for multiple exportText() calls
    2930public:
    3031        EditorDock(App::MainWindow* parent);
     32
     33        const Codec* getCodec() const;
     34        QString getText() const;
    3135
    3236private:
     
    3842        void setCodec(QString by_name);
    3943        void showTextConverterDialog();
     44        bool exportText();
     45        bool exportTextAs();
    4046
    4147signals:
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License