diff --git a/FIXME b/FIXME new file mode 100644 index 0000000..05d7ccd --- /dev/null +++ b/FIXME @@ -0,0 +1,38 @@ +File Menu +--------- +Reopen +Save changes +Close +Archive Info + +Edit Menu +--------- +Copy +Paste +Paste Special +Select All +Invert Selection + +Actions Menu +------------ +View +Recompress +Add Files +Open as disk image +Edit Comment +Edit Attributes +Rename Volume +Convert to disk image +Convert to archive file +Import file from WAV +Import BAS from Text + +Tools Menu +---------- + + +Help Menu +--------- +Contents +Visit web site + diff --git a/Makefile.new b/Makefile.new new file mode 100644 index 0000000..e720059 --- /dev/null +++ b/Makefile.new @@ -0,0 +1,50 @@ +# +# Makefile for cavaldos. Pretty lame, needs to be improved. +# +NAME=calvados +CFLAGS=-g -Wall +GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0` +LFLAGS= +LIBS=-l libgdk +SRCS=calvados.c select_volume.c closing_dialog.c close_dialog.c show_about.c \ + disk_sector_viewer_popup.c create_disk_image.c new_archive.c \ + open_file.c okfunc_create_disk_image.c okfunc_select_volume.c \ + help_func_create_disk_image.c help_func_select_volume.c \ + do_open_file.c save_to_file.c preferences.c print.c add_files.c \ + do_new_archive.c create_radio.c acceptfunc_add_files.c \ + help_func_add_files.c extract_files.c extractfunc_extract_files.c \ + help_func_extract_files.c disk_image_converter.c do_image_converter.c \ + do_add_files.c archive_info.c edit_comment.c new_disk_image.c \ + help_func_archive_info.c delete_file.c rename.c select_image_convert.c \ + select_first_sst_image.c recompress_files.c show_error.c file_viewer.c \ + donefunc_file_viewer.c help_func_file_viewer.c add_disk_image.c test.c \ + findfunc_file_viewer.c +OBJS=$(SRCS:.c=.o) +HEADERS=calvados.h +CC=gcc +DESTDIR=/usr/local +IMGDIR=images +RM=/bin/rm +INSTALL=/usr/bin/install + +INCLUDES=-I/usr/include/glib-2.0/ \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \ + -I/usr/include/pango-1.0/ -I/usr/include/cairo/ \ + -I/usr/include/gdk/ -I/usr/include/gdk-pixbuf-2.0/ \ + -I/usr/include/atk-1.0/ -I/usr/include/gtk-unix-print-2.0/ + +all: $(NAME) + +$(NAME): $(OBJS) + $(CC) $(CFLAGS) -o $(NAME) $(OBJS) $(LFLAGS) $(LIBS) $(GTKFLAGS) + +.c.o: + $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ + +install: + $(INSTALL) $(NAME) $(DESTDIR)/bin + $(INSTALL) -D $(IMGDIR) $(DESTDIR)/$(IMGDIR) + +clean: + $(RM) -f $(NAME) *.o *~ + diff --git a/Makefile.orig b/Makefile.orig new file mode 100644 index 0000000..d64013e --- /dev/null +++ b/Makefile.orig @@ -0,0 +1,43 @@ +# +# Makefile for cavaldos. Pretty lame, needs to be improved. +# +NAME=calvados +CFLAGS=-g -Wall -o $(NAME) +#GTKFLAGS=-export-dynamic `pkg-config --cflags --libs gtk+-2.0` +GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0` +SRCS=calvados.c select_volume.c closing_dialog.c close_dialog.c show_about.c \ + disk_sector_viewer_popup.c create_disk_image.c new_archive.c \ + open_file.c okfunc_create_disk_image.c okfunc_select_volume.c \ + help_func_create_disk_image.c help_func_select_volume.c \ + do_open_file.c save_to_file.c preferences.c print.c add_files.c \ + do_new_archive.c create_radio.c acceptfunc_add_files.c \ + help_func_add_files.c extract_files.c extractfunc_extract_files.c \ + help_func_extract_files.c disk_image_converter.c do_image_converter.c \ + do_add_files.c archive_info.c edit_comment.c new_disk_image.c \ + help_func_archive_info.c delete_file.c rename.c select_image_convert.c \ + select_first_sst_image.c recompress_files.c show_error.c file_viewer.c \ + donefunc_file_viewer.c help_func_file_viewer.c add_disk_image.c test.c \ + findfunc_file_viewer.c +OBJS=$(SRCS:.c=.o) +HEADERS=calvados.h +CC=gcc +DESTDIR=/usr/local + +INCLUDES=-I/usr/include/glib-2.0/ \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \ + -I/usr/include/pango-1.0/ -I/usr/include/cairo/ \ + -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0/ \ + -I/usr/include/gtk-unix-print-2.0/ + +all: calvados + +calvados: $(SRCS) $(HEADERS) + $(CC) $(CFLAGS) $(SRCS) $(GTKFLAGS) $(INCLUDES) + +install: + /usr/bin/install $(NAME) $(DESTDIR)/bin + /usr/bin/install -D images $(DESTDIR)/images + +clean: + /bin/rm -f $(NAME) + diff --git a/Makefile.save b/Makefile.save new file mode 100644 index 0000000..d64013e --- /dev/null +++ b/Makefile.save @@ -0,0 +1,43 @@ +# +# Makefile for cavaldos. Pretty lame, needs to be improved. +# +NAME=calvados +CFLAGS=-g -Wall -o $(NAME) +#GTKFLAGS=-export-dynamic `pkg-config --cflags --libs gtk+-2.0` +GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0` +SRCS=calvados.c select_volume.c closing_dialog.c close_dialog.c show_about.c \ + disk_sector_viewer_popup.c create_disk_image.c new_archive.c \ + open_file.c okfunc_create_disk_image.c okfunc_select_volume.c \ + help_func_create_disk_image.c help_func_select_volume.c \ + do_open_file.c save_to_file.c preferences.c print.c add_files.c \ + do_new_archive.c create_radio.c acceptfunc_add_files.c \ + help_func_add_files.c extract_files.c extractfunc_extract_files.c \ + help_func_extract_files.c disk_image_converter.c do_image_converter.c \ + do_add_files.c archive_info.c edit_comment.c new_disk_image.c \ + help_func_archive_info.c delete_file.c rename.c select_image_convert.c \ + select_first_sst_image.c recompress_files.c show_error.c file_viewer.c \ + donefunc_file_viewer.c help_func_file_viewer.c add_disk_image.c test.c \ + findfunc_file_viewer.c +OBJS=$(SRCS:.c=.o) +HEADERS=calvados.h +CC=gcc +DESTDIR=/usr/local + +INCLUDES=-I/usr/include/glib-2.0/ \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \ + -I/usr/include/pango-1.0/ -I/usr/include/cairo/ \ + -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0/ \ + -I/usr/include/gtk-unix-print-2.0/ + +all: calvados + +calvados: $(SRCS) $(HEADERS) + $(CC) $(CFLAGS) $(SRCS) $(GTKFLAGS) $(INCLUDES) + +install: + /usr/bin/install $(NAME) $(DESTDIR)/bin + /usr/bin/install -D images $(DESTDIR)/images + +clean: + /bin/rm -f $(NAME) + diff --git a/Makefile.test b/Makefile.test new file mode 100644 index 0000000..4b236a5 --- /dev/null +++ b/Makefile.test @@ -0,0 +1,55 @@ +# +# Makefile for cavaldos. Pretty lame, needs to be improved. +# +NAME=calvados +CFLAGS=-g -Wall -o $(NAME) +#GTKFLAGS=-export-dynamic `pkg-config --cflags --libs gtk+-2.0` +GTKFLAGS=`pkg-config --cflags --libs gtk+-2.0` +SRCS=calvados.c select_volume.c closing_dialog.c close_dialog.c show_about.c \ + disk_sector_viewer_popup.c create_disk_image.c new_archive.c \ + open_file.c okfunc_create_disk_image.c okfunc_select_volume.c \ + help_func_create_disk_image.c help_func_select_volume.c \ + do_open_file.c save_to_file.c preferences.c print.c add_files.c \ + do_new_archive.c create_radio.c acceptfunc_add_files.c \ + help_func_add_files.c extract_files.c extractfunc_extract_files.c \ + help_func_extract_files.c disk_image_converter.c do_image_converter.c \ + do_add_files.c archive_info.c edit_comment.c help_func_archive_info.c \ + delete_file.c rename.c select_image_convert.c select_first_sst_image.c \ + recompress_files.c show_error.c file_viewer.c donefunc_file_viewer.c \ + help_func_file_viewer.c add_disk_image.c test.c findfunc_file_viewer.c \ + bulk_disk_image_converter.c close.c save_changes.c reopen.c copy.c paste.c \ + paste_special.c find.c select_all.c invert_selection.c create_subdirectory.c \ + open_as_disk_image.c edit_attributes.c rename_volume.c convert_to_disk_image.c \ + convert_to_archive_file.c import_file_from_wav.c import_bas_from_text.c \ + contents.c visit_website.c volume_copier_open_volume.c volume_copier_open_file.c \ + twomg_properties_editor.c eol_scanner.c do_eol_scan.c do_2mg_edit.c \ + do_volume_copier_open_file.c okfunc_volume_copier_open_volume.c \ + help_func_volume_copier_open_volume.c do_bulk_disk_converter.c +OBJS=$(SRCS:.c=.o) +HEADERS=calvados.h +CC=gcc +LD=gcc +DESTDIR=/usr/local + +INCLUDES=-I/usr/include/glib-2.0/ \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \ + -I/usr/include/pango-1.0/ -I/usr/include/cairo/ \ + -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0/ \ + -I/usr/include/gtk-unix-print-2.0/ + +%.o: %.c + $(CC) $(CFLAGS) $(GTKFLAGS) $(INCLUDES) -o $@ -c $< + +all: $(OBJS) + $(LD) -o $(TARGET) $(OBJS) $(LDFLAGS) $(GTKFLAGS) + +#calvados: $(SRCS) $(HEADERS) +# $(CC) $(CFLAGS) $(SRCS) $(GTKFLAGS) $(INCLUDES) + +install: + /usr/bin/install $(NAME) $(DESTDIR)/bin + /usr/bin/install -D images $(DESTDIR)/images + +clean: + /bin/rm -f $(NAME) + diff --git a/create_disk_image.c b/create_disk_image.c index c14bc30..78cca8e 100644 --- a/create_disk_image.c +++ b/create_disk_image.c @@ -13,6 +13,14 @@ GtkWidget *hfsVolumeEntry; GtkWidget *blocksEntry; GtkWidget *blocksLabel; +GtkWidget *s140kRb; +GtkWidget *s800kRb; +GtkWidget *s14MRb; +GtkWidget *s5MBRb; +GtkWidget *s16MBRb; +GtkWidget *s20MBRb; +GtkWidget *s32MBRb; + /* * * Grey out radio buttons, checkboxes and entries as appropriate @@ -103,13 +111,13 @@ void create_disk_image() GtkWidget *hfsRb; GtkWidget *blankRb; GSList *filesystemRbGroup = NULL; - GtkWidget *s140kRb; + /*GtkWidget *s140kRb; GtkWidget *s800kRb; GtkWidget *s14MRb; GtkWidget *s5MBRb; GtkWidget *s16MBRb; GtkWidget *s20MBRb; - GtkWidget *s32MBRb; + GtkWidget *s32MBRb;*/ GtkWidget *specifyHbox; GtkWidget *specifyRb; GSList *newDiskSizeRbGroup = NULL; diff --git a/do_open_file.c b/do_open_file.c index c47c4a5..2f860bb 100644 --- a/do_open_file.c +++ b/do_open_file.c @@ -19,6 +19,6 @@ void do_open_file(char *filename) g_print("Open file function goes here.\n"); g_print("filename=%s\n", filename); - strcpy(open_file_ptr, filename); + strncpy(open_file_ptr, filename, 255); } diff --git a/okfunc_create_disk_image.c b/okfunc_create_disk_image.c index a8b20cc..e955208 100644 --- a/okfunc_create_disk_image.c +++ b/okfunc_create_disk_image.c @@ -3,6 +3,14 @@ #include "calvados.h" +extern GtkWidget *s140kRb; +extern GtkWidget *s800kRb; +extern GtkWidget *s14MRb; +extern GtkWidget *s5MBRb; +extern GtkWidget *s16MBRb; +extern GtkWidget *s20MBRb; +extern GtkWidget *s32MBRb; + /* * * okfunc_create_disk_image() @@ -17,6 +25,13 @@ void okfunc_create_disk_image(GtkWidget *widget, gpointer data) /* --- Display message --- */ g_print("Create function goes here.\n"); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(s140kRb)) == TRUE) { + g_print("140k\n"); + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(s800kRb)) == TRUE) { + g_print("800k\n"); + } + /* --- Close it. --- */ gtk_widget_destroy(GTK_WIDGET(data)); } diff --git a/preferences.c b/preferences.c index 36d0f39..077010e 100644 --- a/preferences.c +++ b/preferences.c @@ -245,21 +245,30 @@ void preferences() GtkWidget *viewerFileSizeSpinner; GtkWidget *kBytesLabel; GtkWidget *conversionOptionsVbox; + GSList *compressionRbGroup = NULL; GtkWidget *defaultCompressionMethodLabel; - GtkWidget *noCompressionCb; - GtkWidget *squeezeCb; + /*GtkWidget *noCompressionCb;*/ + GtkWidget *noCompressionRb; + /*GtkWidget *squeezeCb;*/ + GtkWidget *squeezeRb; GtkWidget *squeezeLabel; - GtkWidget *dynamicLZW1Cb; + /*GtkWidget *dynamicLZW1Cb;*/ + GtkWidget *dynamicLZW1Rb; GtkWidget *dynamicLZW1Label; - GtkWidget *dynamicLZW2Cb; + /*GtkWidget *dynamicLZW2Cb;*/ + GtkWidget *dynamicLZW2Rb; GtkWidget *dynamicLZW2Label; - GtkWidget *twelveBitLZCCb; + /*GtkWidget *twelveBitLZCCb;*/ + GtkWidget *twelveBitLZCRb; GtkWidget *twelveBitLZCLabel; - GtkWidget *sixteenBitLZCCb; + /*GtkWidget *sixteenBitLZCCb;*/ + GtkWidget *sixteenBitLZCRb; GtkWidget *sixteenBitLZCLabel; - GtkWidget *deflateCb; + /*GtkWidget *deflateCb;*/ + GtkWidget *deflateRb; GtkWidget *deflateLabel; - GtkWidget *bzip2Cb; + /*GtkWidget *bzip2Cb;*/ + GtkWidget *bzip2Rb; GtkWidget *bzip2Label; GtkWidget *filesVbox; GtkWidget *folderForTemporaryFilesHbox; @@ -757,61 +766,70 @@ void preferences() gtk_widget_show(defaultCompressionMethodLabel); gtk_box_pack_start(GTK_BOX(compressionVbox), defaultCompressionMethodLabel, TRUE, TRUE, 0); - noCompressionCb = gtk_check_button_new_with_label("No compression"); +/* FIXME -- needs to be radio button */ + /*noCompressionCb = gtk_check_button_new_with_label("No compression"); gtk_box_pack_start(GTK_BOX(compressionVbox), noCompressionCb, TRUE, TRUE, 0); - gtk_widget_show(noCompressionCb); + gtk_widget_show(noCompressionCb);*/ + noCompressionRb = create_radio(compressionVbox, &compressionRbGroup, "No compression"); - squeezeCb = gtk_check_button_new_with_label("Squeeze"); + /*squeezeCb = gtk_check_button_new_with_label("Squeeze"); gtk_box_pack_start(GTK_BOX(compressionVbox), squeezeCb, TRUE, TRUE, 0); - gtk_widget_show(squeezeCb); + gtk_widget_show(squeezeCb);*/ + squeezeRb = create_radio(compressionVbox, &compressionRbGroup, "Squeeze"); squeezeLabel = gtk_label_new("Uses a combination of RLE and Huffman.\rNot compatible with ProDOS 8 ShrinkIt."); gtk_box_pack_start(GTK_BOX(compressionVbox), squeezeLabel, TRUE, TRUE, 0); gtk_widget_show(squeezeLabel); - dynamicLZW1Cb = gtk_check_button_new_with_label("Dynamic LZW/1"); + /*dynamicLZW1Cb = gtk_check_button_new_with_label("Dynamic LZW/1"); gtk_box_pack_start(GTK_BOX(compressionVbox), dynamicLZW1Cb, TRUE, TRUE, 0); - gtk_widget_show(dynamicLZW1Cb); + gtk_widget_show(dynamicLZW1Cb);*/ + dynamicLZW1Rb = create_radio(compressionVbox, &compressionRbGroup, "Dynamic LZW/1"); dynamicLZW1Label = gtk_label_new("The compression method used by ProDOS 8 ShrinkIt."); gtk_box_pack_start(GTK_BOX(compressionVbox), dynamicLZW1Label, TRUE, TRUE, 0); gtk_widget_show(dynamicLZW1Label); - dynamicLZW2Cb = gtk_check_button_new_with_label("Dynamic LZW/2 (recommended)"); + /*dynamicLZW2Cb = gtk_check_button_new_with_label("Dynamic LZW/2 (recommended)"); gtk_box_pack_start(GTK_BOX(compressionVbox), dynamicLZW2Cb, TRUE, TRUE, 0); - gtk_widget_show(dynamicLZW2Cb); + gtk_widget_show(dynamicLZW2Cb);*/ + dynamicLZW2Rb = create_radio(compressionVbox, &compressionRbGroup, "Dynamic LZW/2 (recommended)"); dynamicLZW2Label = gtk_label_new("The compression method used by GS/ShrinkIt"); gtk_box_pack_start(GTK_BOX(compressionVbox), dynamicLZW2Label, TRUE, TRUE, 0); gtk_widget_show(dynamicLZW2Label); - twelveBitLZCCb = gtk_check_button_new_with_label("12-bit LZC"); + /*twelveBitLZCCb = gtk_check_button_new_with_label("12-bit LZC"); gtk_box_pack_start(GTK_BOX(compressionVbox), twelveBitLZCCb, TRUE, TRUE, 0); - gtk_widget_show(twelveBitLZCCb); + gtk_widget_show(twelveBitLZCCb);*/ + twelveBitLZCRb = create_radio(compressionVbox, &compressionRbGroup, "12-bit LZC"); twelveBitLZCLabel = gtk_label_new("Compression used by UNIX \"compress\" command.\rNot compatible with ProDOS 8 ShrinkIt."); gtk_box_pack_start(GTK_BOX(compressionVbox), twelveBitLZCLabel, TRUE, TRUE, 0); gtk_widget_show(twelveBitLZCLabel); - sixteenBitLZCCb = gtk_check_button_new_with_label("16-bit LZC"); + /*sixteenBitLZCCb = gtk_check_button_new_with_label("16-bit LZC"); gtk_box_pack_start(GTK_BOX(compressionVbox), sixteenBitLZCCb, TRUE, TRUE, 0); - gtk_widget_show(sixteenBitLZCCb); + gtk_widget_show(sixteenBitLZCCb);*/ + sixteenBitLZCRb = create_radio(compressionVbox, &compressionRbGroup, "16-bit LZC"); sixteenBitLZCLabel = gtk_label_new("Compression used by UNIX \"compress\" command.\rNot compatible with ProDOS 8 ShrinkIt."); gtk_box_pack_start(GTK_BOX(compressionVbox), sixteenBitLZCLabel, TRUE, TRUE, 0); gtk_widget_show(sixteenBitLZCLabel); - deflateCb = gtk_check_button_new_with_label("deflate"); + /*deflateCb = gtk_check_button_new_with_label("deflate"); gtk_box_pack_start(GTK_BOX(compressionVbox), deflateCb, TRUE, TRUE, 0); - gtk_widget_show(deflateCb); + gtk_widget_show(deflateCb);*/ + deflateRb = create_radio(compressionVbox, &compressionRbGroup, "deflate"); deflateLabel = gtk_label_new("Uses a combination of RLE and Huffman.\rNot compatible with ProDOS 8 ShrinkIt."); gtk_box_pack_start(GTK_BOX(compressionVbox), deflateLabel, TRUE, TRUE, 0); gtk_widget_show(deflateLabel); - bzip2Cb = gtk_check_button_new_with_label("Bzip2"); + /*bzip2Cb = gtk_check_button_new_with_label("Bzip2"); gtk_box_pack_start(GTK_BOX(compressionVbox), bzip2Cb, TRUE, TRUE, 0); - gtk_widget_show(bzip2Cb); + gtk_widget_show(bzip2Cb);*/ + bzip2Rb = create_radio(compressionVbox, &compressionRbGroup, "Bzip2"); bzip2Label = gtk_label_new("Compression used by bzip2.\rNot compatible with any Apple II applications."); gtk_box_pack_start(GTK_BOX(compressionVbox), bzip2Label, TRUE, TRUE, 0); diff --git a/volume_copier_open_file.c b/volume_copier_open_file.c index efd647d..8ccc753 100644 --- a/volume_copier_open_file.c +++ b/volume_copier_open_file.c @@ -16,6 +16,7 @@ void volume_copier_open_file(GtkWidget *widget, gpointer data) gint res; GtkFileFilter *diskImagesFilt; GtkFileFilter *allFilesFilt; + GtkWidget *openAsReadOnlyCb; /* --- Display message --- */ /*g_print("volume_copier_open_file function goes here.\n");*/ @@ -59,6 +60,10 @@ void volume_copier_open_file(GtkWidget *widget, gpointer data) gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt); + openAsReadOnlyCb = gtk_check_button_new_with_label("Open as read-only"); + gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->action_area), openAsReadOnlyCb, TRUE, TRUE, 0); + gtk_widget_show(openAsReadOnlyCb); + res = gtk_dialog_run(GTK_DIALOG(dialog)); if (res == GTK_RESPONSE_ACCEPT) { char *filename;