Update to current
Added a significant amount more of the UI code
This commit is contained in:
parent
c5dda859f2
commit
fbf7281338
25
Makefile
25
Makefile
|
@ -1,24 +1,39 @@
|
|||
#
|
||||
# Makefile for cavaldos. Prety lame, needs to be improved.
|
||||
# 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=-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
|
||||
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
|
||||
OBJS=$(SRCS:.c=.o)
|
||||
HEADERS=calvados.h
|
||||
CC=gcc
|
||||
DESTDIR=/usr/local
|
||||
|
||||
INCLUDE=-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/
|
||||
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)
|
||||
$(CC) $(CFLAGS) $(SRCS) $(GTKFLAGS) $(INCLUDES)
|
||||
|
||||
install:
|
||||
/usr/bin/install $(NAME) $(DESTDIR)/bin
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* acceptfunc_add_files()
|
||||
*
|
||||
* Accept Function for add files
|
||||
*
|
||||
* Show that the "Accept" button was pressed
|
||||
*
|
||||
*/
|
||||
void acceptfunc_add_files(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Add function goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* add_disk_image()
|
||||
*
|
||||
* Display add disk image dialog
|
||||
*
|
||||
*/
|
||||
void add_disk_image(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
|
||||
g_print("add disk image goes here\n");
|
||||
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Add Disk Image",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||
filename = gtk_file_chooser_get_filename(chooser);
|
||||
do_open_file(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,179 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
void fileAttributePreservationRbCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
g_print("clicked %s\n", (char *)data);
|
||||
}
|
||||
|
||||
|
||||
void textConversionRbCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
g_print("clicked %s\n", (char *)data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* add_files()
|
||||
*
|
||||
* Add Files dialog box.
|
||||
*
|
||||
*/
|
||||
void add_files()
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *help_button;
|
||||
GtkWidget *hbox1;
|
||||
GtkWidget *vboxl;
|
||||
GtkWidget *vboxr;
|
||||
GtkWidget *fileAttributePreservationFrame;
|
||||
GtkWidget *miscellaneousFrame;
|
||||
GtkWidget *textConversionFrame;
|
||||
GtkWidget *fileAttributePreservationVbox;
|
||||
GtkWidget *miscellaneousVbox;
|
||||
GtkWidget *textConversionVbox;
|
||||
GtkWidget *storagePrefixVbox;
|
||||
GtkWidget *ignoreFileAttributePreservationTagsRb;
|
||||
GtkWidget *useFileAttributePreservationTagsRb;
|
||||
GtkWidget *useTagsAndGuessTypeFromExtensionRb;
|
||||
GSList *fileAttributePreservationRbGroup = NULL;
|
||||
GtkWidget *dontConvertTextFilesRb;
|
||||
GtkWidget *convertTextFilesByFileTypeRb;
|
||||
GtkWidget *autoDetectConvertFilesByFileTypeRb;
|
||||
GtkWidget *convertAllFilesRb;
|
||||
GSList *textConversionRbGroup = NULL;
|
||||
GtkWidget *includeSubfoldersCb;
|
||||
GtkWidget *stripFolderNamesCb;
|
||||
GtkWidget *overwriteExistingFilesCb;
|
||||
GtkWidget *storagePrefixLabel;
|
||||
GtkWidget *storagePrefixEntry;
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_file_chooser_dialog_new("Add Files...",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
"_Accept",
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
/*GTK_STOCK_HELP,
|
||||
GTK_RESPONSE_HELP,*/
|
||||
NULL);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), FALSE);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
help_button = gtk_button_new_with_label("Help");
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
hbox1 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(hbox1);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox1, TRUE, TRUE, 0);
|
||||
|
||||
vboxl = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vboxl);
|
||||
gtk_box_pack_start(GTK_BOX(hbox1), vboxl, TRUE, TRUE, 0);
|
||||
|
||||
vboxr = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vboxr);
|
||||
gtk_box_pack_start(GTK_BOX(hbox1), vboxr, TRUE, TRUE, 0);
|
||||
|
||||
fileAttributePreservationFrame = gtk_frame_new("File attribute preservation");
|
||||
gtk_widget_show(fileAttributePreservationFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxl), fileAttributePreservationFrame, TRUE, TRUE, 0);
|
||||
fileAttributePreservationVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(fileAttributePreservationVbox);
|
||||
gtk_container_add(GTK_CONTAINER(fileAttributePreservationFrame), fileAttributePreservationVbox);
|
||||
|
||||
textConversionFrame = gtk_frame_new("Text conversion");
|
||||
gtk_widget_show(textConversionFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxl), textConversionFrame, TRUE, TRUE, 0);
|
||||
textConversionVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(textConversionVbox);
|
||||
gtk_container_add(GTK_CONTAINER(textConversionFrame), textConversionVbox);
|
||||
|
||||
miscellaneousFrame = gtk_frame_new("Miscellaneous");
|
||||
gtk_widget_show(miscellaneousFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxr), miscellaneousFrame, TRUE, TRUE, 0);
|
||||
miscellaneousVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(miscellaneousVbox);
|
||||
gtk_container_add(GTK_CONTAINER(miscellaneousFrame), miscellaneousVbox);
|
||||
|
||||
storagePrefixVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(storagePrefixVbox);
|
||||
gtk_box_pack_start(GTK_BOX(vboxr), storagePrefixVbox, TRUE, TRUE, 0);
|
||||
|
||||
ignoreFileAttributePreservationTagsRb = create_radio(fileAttributePreservationVbox, &fileAttributePreservationRbGroup, "Ignore file attribute preservation tags");
|
||||
useFileAttributePreservationTagsRb = create_radio(fileAttributePreservationVbox, &fileAttributePreservationRbGroup, "Use file attribute preservation flags");
|
||||
useTagsAndGuessTypeFromExtensionRb = create_radio(fileAttributePreservationVbox, &fileAttributePreservationRbGroup, "Use tags and guess type from extension");
|
||||
|
||||
dontConvertTextFilesRb = create_radio(textConversionVbox, &textConversionRbGroup, "Don't convert text files");
|
||||
convertTextFilesByFileTypeRb = create_radio(textConversionVbox, &textConversionRbGroup, "Convert text files by file type");
|
||||
autoDetectConvertFilesByFileTypeRb = create_radio(textConversionVbox, &textConversionRbGroup, "Auto-detect & Convert text files by file type with text");
|
||||
convertAllFilesRb = create_radio(textConversionVbox, &textConversionRbGroup, "Convert ALL files");
|
||||
|
||||
includeSubfoldersCb = gtk_check_button_new_with_label("Include subfolders");
|
||||
gtk_widget_show(includeSubfoldersCb);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), includeSubfoldersCb, TRUE, TRUE, 0);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(includeSubfoldersCb), TRUE);
|
||||
|
||||
stripFolderNamesCb = gtk_check_button_new_with_label("Strip folder names");
|
||||
gtk_widget_show(stripFolderNamesCb);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), stripFolderNamesCb, TRUE, TRUE, 0);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stripFolderNamesCb), TRUE);
|
||||
|
||||
overwriteExistingFilesCb = gtk_check_button_new_with_label("Overwrite existing files");
|
||||
gtk_widget_show(overwriteExistingFilesCb);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), overwriteExistingFilesCb, TRUE, TRUE, 0);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(overwriteExistingFilesCb), TRUE);
|
||||
|
||||
storagePrefixLabel = gtk_label_new("Storage prefix");
|
||||
gtk_widget_show(storagePrefixLabel);
|
||||
gtk_box_pack_start(GTK_BOX(storagePrefixVbox), storagePrefixLabel, TRUE, TRUE, 0);
|
||||
|
||||
storagePrefixEntry = gtk_entry_new();
|
||||
gtk_widget_show(storagePrefixEntry);
|
||||
gtk_box_pack_start(GTK_BOX(storagePrefixVbox), storagePrefixEntry, TRUE, TRUE, 0);
|
||||
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(useFileAttributePreservationTagsRb), TRUE);
|
||||
|
||||
/* Set up callbacks for file attribute preservation frame */
|
||||
gtk_signal_connect(GTK_OBJECT(ignoreFileAttributePreservationTagsRb), "clicked", GTK_SIGNAL_FUNC(fileAttributePreservationRbCallback), (gpointer)"ignoreFileAttributePreservationTagsRb");
|
||||
gtk_signal_connect(GTK_OBJECT(useFileAttributePreservationTagsRb), "clicked", GTK_SIGNAL_FUNC(fileAttributePreservationRbCallback), (gpointer)"useFileAttributePreservationTagsRb");
|
||||
gtk_signal_connect(GTK_OBJECT(useTagsAndGuessTypeFromExtensionRb), "clicked", GTK_SIGNAL_FUNC(fileAttributePreservationRbCallback), (gpointer)"useTagsAndGuessTypeFromExtensionRb");
|
||||
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(convertTextFilesByFileTypeRb), TRUE);
|
||||
|
||||
/* Set up callbacks for text conversion frame */
|
||||
gtk_signal_connect(GTK_OBJECT(dontConvertTextFilesRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback), (gpointer)"dontConvertTextFilesRb");
|
||||
gtk_signal_connect(GTK_OBJECT(convertTextFilesByFileTypeRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback), (gpointer)"convertTextFilesByFileTypeRb");
|
||||
gtk_signal_connect(GTK_OBJECT(autoDetectConvertFilesByFileTypeRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback), (gpointer)"autoDetectConvertFilesByFileTypeRb");
|
||||
gtk_signal_connect(GTK_OBJECT(convertAllFilesRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback), (gpointer)"convertAllFilesRb");
|
||||
|
||||
/* FIXME -- need to make correct path here */
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), "Desktop");
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
|
||||
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
|
||||
do_add_files(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,202 @@
|
|||
#include <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/* FIXME -- this needs to be thought through and moved to the .h file or somewhere better */
|
||||
#define SHK 0
|
||||
#define DSK 1
|
||||
|
||||
/*
|
||||
*
|
||||
* archive_info()
|
||||
*
|
||||
*/
|
||||
void archive_info()
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *vbox;
|
||||
|
||||
GtkWidget *archiveInfoFrame;
|
||||
GtkWidget *archiveInfoHbox;
|
||||
GtkWidget *archiveInfoVboxl;
|
||||
GtkWidget *archiveInfoVboxr;
|
||||
GtkWidget *filenameLabel;
|
||||
GtkWidget *formatLabel;
|
||||
GtkWidget *recordsLabel;
|
||||
GtkWidget *masterVersionLabel;
|
||||
GtkWidget *createdLabel;
|
||||
GtkWidget *modifiedLabel;
|
||||
GtkWidget *junkSkippedLabel;
|
||||
|
||||
GtkWidget *fileCharacteristicsFrame;
|
||||
GtkWidget *fileCharacteristicsHbox;
|
||||
GtkWidget *fileCharacteristicsVboxl;
|
||||
GtkWidget *fileCharacteristicsVboxr;
|
||||
GtkWidget *diskCharacteristicsFrame;
|
||||
GtkWidget *diskCharacteristicsHbox;
|
||||
GtkWidget *diskCharacteristicsInfoVboxl;
|
||||
GtkWidget *diskCharacteristicsInfoVboxr;
|
||||
|
||||
GtkWidget *hbox2;
|
||||
GtkWidget *helpButton;
|
||||
GtkWidget *doneButton;
|
||||
int archive_type = 0;
|
||||
char dialog_title[256];
|
||||
|
||||
g_print("archive info goes here\n");
|
||||
|
||||
/* FIXME -- need to detect what type of archive we are looking at */
|
||||
if (archive_type == SHK) {
|
||||
strcpy(dialog_title, "NuFX (ShrinkIt) Archive");
|
||||
} else if (archive_type == DSK) {
|
||||
strcpy(dialog_title, "Disk Image Info");
|
||||
} else {
|
||||
strcpy(dialog_title, "Disk Image Info");
|
||||
}
|
||||
|
||||
/* --- Create a dialog window --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the destroy button --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(gtk_widget_destroyed),
|
||||
&dialog);
|
||||
|
||||
/* --- Add a title to the window --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), dialog_title);
|
||||
|
||||
/* --- Create a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
/* For archive info SHK, etc */
|
||||
if (archive_type == SHK) {
|
||||
archiveInfoFrame = gtk_frame_new("Archive Info");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), archiveInfoFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(archiveInfoFrame);
|
||||
|
||||
archiveInfoHbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(archiveInfoFrame), archiveInfoHbox);
|
||||
gtk_widget_show(archiveInfoHbox);
|
||||
|
||||
archiveInfoVboxl = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoHbox), archiveInfoVboxl, TRUE, TRUE, 0);
|
||||
gtk_widget_show(archiveInfoVboxl);
|
||||
|
||||
archiveInfoVboxr = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoHbox), archiveInfoVboxr, TRUE, TRUE, 0);
|
||||
gtk_widget_show(archiveInfoVboxr);
|
||||
|
||||
filenameLabel = gtk_label_new("Filename:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), filenameLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(filenameLabel);
|
||||
formatLabel = gtk_label_new("Format:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), formatLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(formatLabel);
|
||||
recordsLabel = gtk_label_new("Records:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), recordsLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(recordsLabel);
|
||||
masterVersionLabel = gtk_label_new("Master Version:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), masterVersionLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(masterVersionLabel);
|
||||
createdLabel = gtk_label_new("Created:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), createdLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(createdLabel);
|
||||
modifiedLabel = gtk_label_new("Modified:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), modifiedLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(modifiedLabel);
|
||||
junkSkippedLabel = gtk_label_new("Junk Skipped:");
|
||||
gtk_box_pack_start(GTK_BOX(archiveInfoVboxl), junkSkippedLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(junkSkippedLabel);
|
||||
} else {
|
||||
/* For disk image info DSK, etc */
|
||||
fileCharacteristicsFrame = gtk_frame_new("File Characteristics");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), fileCharacteristicsFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(fileCharacteristicsFrame);
|
||||
|
||||
fileCharacteristicsHbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(fileCharacteristicsFrame), fileCharacteristicsHbox);
|
||||
gtk_widget_show(fileCharacteristicsHbox);
|
||||
|
||||
fileCharacteristicsVboxl = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(fileCharacteristicsHbox), fileCharacteristicsVboxl, TRUE, TRUE, 0);
|
||||
gtk_widget_show(fileCharacteristicsVboxl);
|
||||
|
||||
fileCharacteristicsVboxr = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(fileCharacteristicsHbox), fileCharacteristicsVboxr, TRUE, TRUE, 0);
|
||||
gtk_widget_show(fileCharacteristicsVboxr);
|
||||
|
||||
filenameLabel = gtk_label_new("Filename:");
|
||||
gtk_box_pack_start(GTK_BOX(fileCharacteristicsVboxl), filenameLabel, TRUE, TRUE, 0);
|
||||
gtk_widget_show(filenameLabel);
|
||||
|
||||
diskCharacteristicsFrame = gtk_frame_new("Disk Characteristics");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), diskCharacteristicsFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(diskCharacteristicsFrame);
|
||||
|
||||
diskCharacteristicsHbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(diskCharacteristicsFrame), diskCharacteristicsHbox);
|
||||
gtk_widget_show(diskCharacteristicsHbox);
|
||||
|
||||
}
|
||||
|
||||
hbox2 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), hbox2, TRUE, TRUE, 0);
|
||||
gtk_widget_show(hbox2);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
helpButton = gtk_button_new_with_label("Help");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(helpButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_archive_info),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), helpButton, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(helpButton);
|
||||
|
||||
/*
|
||||
* --- "done" button
|
||||
*/
|
||||
|
||||
/* --- Create the "done" button --- */
|
||||
doneButton = gtk_button_new_with_label("Cancel");
|
||||
|
||||
/* --- Need to close the window if they press "done" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(doneButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Allow it to be the default button --- */
|
||||
GTK_WIDGET_SET_FLAGS(doneButton, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), doneButton, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button the default button --- */
|
||||
gtk_widget_grab_default(doneButton);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(doneButton);
|
||||
|
||||
/* --- Need to close the window if they press "done" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(doneButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Make the dialog visible --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* bulk_disk_image_converter()
|
||||
*
|
||||
* Display bulk disk image converter dialog
|
||||
*
|
||||
*/
|
||||
void bulk_disk_image_converter(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
|
||||
g_print("bulk disk image convert goes here\n");
|
||||
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Select images to convert",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||
filename = gtk_file_chooser_get_filename(chooser);
|
||||
do_open_file(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
287
calvados.c
287
calvados.c
|
@ -7,11 +7,162 @@
|
|||
* 20170310 Leeland Heins
|
||||
*
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gdk/gdkkeysyms-compat.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
enum {
|
||||
COL_PATHNAME = 0,
|
||||
COL_TYPE,
|
||||
COL_AUX,
|
||||
COL_MODDATE,
|
||||
COL_FORMAT,
|
||||
COL_SIZE,
|
||||
COL_RATIO,
|
||||
COL_PACKED,
|
||||
COL_ACCESS,
|
||||
NUM_MAIN_WINDOW_COLS
|
||||
};
|
||||
|
||||
|
||||
/* For displaying displaying disk images/archives in main window */
|
||||
GtkListStore *mw_store;
|
||||
/*GtkTreeIter mw_iter;*/
|
||||
GtkCellRenderer *mw_renderer;
|
||||
GtkTreeModel *mw_model;
|
||||
GtkWidget *mw_view;
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* display_image()
|
||||
*
|
||||
* Display the tree view in the main window,
|
||||
*
|
||||
*/
|
||||
GtkWidget *display_image(GtkWidget *widget, gpointer data, GtkWidget *mw_box)
|
||||
{
|
||||
mw_store = gtk_list_store_new(NUM_MAIN_WINDOW_COLS, G_TYPE_STRING, G_TYPE_UINT);
|
||||
|
||||
/*FIXME*/
|
||||
/* This needs to be in a loop reading from somewhere */
|
||||
/* Append a row and fill in some data */
|
||||
/*gtk_list_store_append(store, &mw_iter);
|
||||
gtk_list_store_set(store, &mw_iter,
|
||||
COL_PATHNAME, "",
|
||||
COL_TYPE, "",
|
||||
COL_AUX, "",
|
||||
COL_MODDATE, "",
|
||||
COL_FORMAT, "",
|
||||
COL_SIZE, "",
|
||||
COL_RATIO, "",
|
||||
COL_PACKED, "",
|
||||
COL_ACCESS, "",
|
||||
-1);*/
|
||||
|
||||
mw_view = gtk_tree_view_new();
|
||||
gtk_widget_set_size_request(mw_view, LIST_WIDTH, LIST_HEIGHT);
|
||||
|
||||
/* --- Column #1 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Pathname",
|
||||
mw_renderer,
|
||||
"text", COL_PATHNAME,
|
||||
NULL);
|
||||
|
||||
/* --- Column #2 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Type",
|
||||
mw_renderer,
|
||||
"text", COL_TYPE,
|
||||
NULL);
|
||||
|
||||
/* --- Column #3 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Aux",
|
||||
mw_renderer,
|
||||
"text", COL_AUX,
|
||||
NULL);
|
||||
/* --- Column #4 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Mod Date",
|
||||
mw_renderer,
|
||||
"text", COL_MODDATE,
|
||||
NULL);
|
||||
|
||||
/* --- Column #5 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Format",
|
||||
mw_renderer,
|
||||
"text", COL_FORMAT,
|
||||
NULL);
|
||||
|
||||
/* --- Column #6 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Size",
|
||||
mw_renderer,
|
||||
"text", COL_SIZE,
|
||||
NULL);
|
||||
|
||||
/* --- Column #7 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Ratio",
|
||||
mw_renderer,
|
||||
"text", COL_RATIO,
|
||||
NULL);
|
||||
|
||||
/* --- Column #8 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Packed",
|
||||
mw_renderer,
|
||||
"text", COL_PACKED,
|
||||
NULL);
|
||||
|
||||
/* --- Column #9 --- */
|
||||
mw_renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(mw_view),
|
||||
-1,
|
||||
"Access",
|
||||
mw_renderer,
|
||||
"text", COL_ACCESS,
|
||||
NULL);
|
||||
|
||||
mw_model = GTK_TREE_MODEL(mw_store);
|
||||
|
||||
gtk_tree_view_set_model(GTK_TREE_VIEW(mw_view), mw_model);
|
||||
|
||||
/* The tree view has acquired its own reference to the
|
||||
* model, so we can drop ours. That way the model will
|
||||
* be freed automatically when the tree view is destroyed */
|
||||
g_object_unref(mw_model);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(mw_box), mw_view, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(mw_view);
|
||||
|
||||
return mw_view;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
/* Our root window */
|
||||
|
@ -253,9 +404,25 @@ int main(int argc, char *argv[])
|
|||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), printMi);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), fileSep2);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(fileMenu), quitMi);
|
||||
|
||||
/* Add file menu to menu bar */
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), fileMi);
|
||||
|
||||
/* connect 'reopen' menu item to the reopen dialog event */
|
||||
g_signal_connect(G_OBJECT(reopenMi), "activate", G_CALLBACK(reopen_menu_item), (gpointer)"reopenMi");
|
||||
|
||||
/* connect 'save changes' menu item to the save_changes dialog event */
|
||||
g_signal_connect(G_OBJECT(saveChangesMi), "activate", G_CALLBACK(save_changes), (gpointer)"saveChangesMi");
|
||||
|
||||
/* connect 'close' menu item to the close_menu_item dialog event */
|
||||
g_signal_connect(G_OBJECT(closeMi), "activate", G_CALLBACK(close_menu_item), (gpointer)"closeMi");
|
||||
|
||||
/* connect 'archive info' menu item to the archive_info dialog event */
|
||||
g_signal_connect(G_OBJECT(archiveInfoMi), "activate", G_CALLBACK(archive_info), (gpointer)"archiveInfoMi");
|
||||
|
||||
/* Hook up the print menu item to the print dialog box */
|
||||
g_signal_connect(G_OBJECT(printMi), "activate", G_CALLBACK(print_page), (gpointer)"printMi");
|
||||
|
||||
/* Edit menu bar items */
|
||||
editMi = gtk_menu_item_new_with_mnemonic("_Edit");
|
||||
copyMi = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY, accel_group);
|
||||
|
@ -332,8 +499,26 @@ int main(int argc, char *argv[])
|
|||
/* Add edit menu to menu bar */
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), editMi);
|
||||
|
||||
/* connect 'copy' menu item to the copy_menu_item dialog event */
|
||||
g_signal_connect(G_OBJECT(copyMi), "activate", G_CALLBACK(copy_menu_item), (gpointer)"copyMi");
|
||||
|
||||
/* connect 'paste' menu item to the paste dialog event */
|
||||
g_signal_connect(G_OBJECT(pasteMi), "activate", G_CALLBACK(paste), (gpointer)"pasteMi");
|
||||
|
||||
/* connect 'paste special' menu item to the paste_special dialog event */
|
||||
g_signal_connect(G_OBJECT(pasteSpecialMi), "activate", G_CALLBACK(paste_special), (gpointer)"pasteSpecialMi");
|
||||
|
||||
/* connect 'find' menu item to the find dialog event */
|
||||
g_signal_connect(G_OBJECT(findMi), "activate", G_CALLBACK(find), (gpointer)"findMi");
|
||||
|
||||
/* connect 'select all' menu item to the select_all dialog event */
|
||||
g_signal_connect(G_OBJECT(selectAllMi), "activate", G_CALLBACK(select_all), (gpointer)"selectAllMi");
|
||||
|
||||
/* connect 'invert selection' menu item to the invert_selection dialog event */
|
||||
g_signal_connect(G_OBJECT(invertSelectionMi), "activate", G_CALLBACK(invert_selection), (gpointer)"invertSelectionMi");
|
||||
|
||||
/* connect 'preferences' menu item to the preferences dialog event */
|
||||
g_signal_connect(G_OBJECT(preferencesMi), "activate", G_CALLBACK(preferences), NULL);
|
||||
g_signal_connect(G_OBJECT(preferencesMi), "activate", G_CALLBACK(preferences), (gpointer)"preferencesMi");
|
||||
|
||||
/* Action menu bar items */
|
||||
actionsMi = gtk_menu_item_new_with_label("Actions");
|
||||
|
@ -431,25 +616,52 @@ int main(int argc, char *argv[])
|
|||
gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 0);
|
||||
|
||||
/* connect 'open image' menu item to the create welcomeage dialog event */
|
||||
g_signal_connect(G_OBJECT(openMi), "activate", G_CALLBACK(open_file), NULL);
|
||||
g_signal_connect(G_OBJECT(openMi), "activate", G_CALLBACK(open_file), (gpointer)"openMi");
|
||||
|
||||
/* connect 'view' menu item to the file viewer dialog event */
|
||||
g_signal_connect(G_OBJECT(viewMi), "activate", G_CALLBACK(file_viewer), (gpointer)"viewMi");
|
||||
|
||||
/* connect 'disk image' menu item to the create disk image dialog event */
|
||||
g_signal_connect(G_OBJECT(diskImageMi), "activate", G_CALLBACK(create_disk_image), NULL);
|
||||
g_signal_connect(G_OBJECT(diskImageMi), "activate", G_CALLBACK(create_disk_image), (gpointer)"diskImageMi");
|
||||
|
||||
/* connect 'add disk image' menu item to the add disk image dialog event */
|
||||
g_signal_connect(G_OBJECT(addDiskImageMi), "activate", G_CALLBACK(add_disk_image), (gpointer)"addDiskImageMi");
|
||||
|
||||
/* connect 'shrinkit archive' menu item to the new archive dialog event */
|
||||
g_signal_connect(G_OBJECT(shrinkItArchiveMi), "activate", G_CALLBACK(new_archive), NULL);
|
||||
g_signal_connect(G_OBJECT(shrinkItArchiveMi), "activate", G_CALLBACK(new_archive), (gpointer)"shrinkItArchiveMi");
|
||||
|
||||
/* connect 'select volume' menu item to the open volume dialog event */
|
||||
g_signal_connect(G_OBJECT(openVolumeMi), "activate", G_CALLBACK(select_volume), NULL);
|
||||
g_signal_connect(G_OBJECT(openVolumeMi), "activate", G_CALLBACK(select_volume), (gpointer)"openVolumeMi");
|
||||
|
||||
/* connect 'rename' menu item to the rename dialog event */
|
||||
g_signal_connect(G_OBJECT(renameMi), "activate", G_CALLBACK(rename_file), (gpointer)"renameMi");
|
||||
|
||||
/* connect 'delete' menu item to the delete dialog event */
|
||||
g_signal_connect(G_OBJECT(deleteMi), "activate", G_CALLBACK(delete_file), (gpointer)"deleteMi");
|
||||
|
||||
/* connect 'recompress' menu item to the recompress dialog event */
|
||||
g_signal_connect(G_OBJECT(recompressMi), "activate", G_CALLBACK(recompress_files), (gpointer)"recompressMi");
|
||||
|
||||
/* connect 'edit comment' menu item to the edit comment dialog event */
|
||||
g_signal_connect(G_OBJECT(editCommentMi), "activate", G_CALLBACK(edit_comment), (gpointer)"editCommentMi");
|
||||
|
||||
/* connect 'about' menu item to the about box event */
|
||||
g_signal_connect(G_OBJECT(aboutCalvadosMi), "activate", G_CALLBACK(show_about), NULL);
|
||||
g_signal_connect(G_OBJECT(aboutCalvadosMi), "activate", G_CALLBACK(show_about), (gpointer)"aboutCalvadosMi");
|
||||
|
||||
/* connect 'disk sector viewer' menu item to the popup menu event */
|
||||
g_signal_connect(G_OBJECT(diskSectorViewerMi), "activate", G_CALLBACK(disk_sector_viewer_popup), NULL);
|
||||
g_signal_connect(G_OBJECT(diskSectorViewerMi), "activate", G_CALLBACK(disk_sector_viewer_popup), (gpointer)"diskSectorViewerMi");
|
||||
|
||||
/* connect 'Select image convert' menu item to the select image conversions popup menu event */
|
||||
g_signal_connect(G_OBJECT(diskImageConverterMi), "activate", G_CALLBACK(select_image_convert), (gpointer)"diskImageConverterMi");
|
||||
|
||||
/* connect 'Select bulk disk image converter' menu item to the bulk disk image converter popup menu event */
|
||||
g_signal_connect(G_OBJECT(bulkDiskImageConverterMi), "activate", G_CALLBACK(bulk_disk_image_converter), (gpointer)"bulkDiskImageConverterMi");
|
||||
|
||||
/* connect 'Merge SST Images' menu item to the merge sst images popup menu event */
|
||||
g_signal_connect(G_OBJECT(mergeSSTImagesMi), "activate", G_CALLBACK(select_first_sst_image), (gpointer)"mergeSSTImagesMi");
|
||||
|
||||
/* Connect 'quit' menu item to the window's "destroy" event */
|
||||
g_signal_connect(G_OBJECT(quitMi), "activate", G_CALLBACK(gtk_main_quit), NULL);
|
||||
g_signal_connect(G_OBJECT(quitMi), "activate", G_CALLBACK(gtk_main_quit), (gpointer)"quitMi");
|
||||
|
||||
/* Create the tool bar */
|
||||
toolbar = gtk_toolbar_new();
|
||||
|
@ -587,30 +799,69 @@ int main(int argc, char *argv[])
|
|||
gtk_widget_set_tooltip_text(GTK_WIDGET(exitTb), "Exit");
|
||||
|
||||
/* Hook up the open image button to the open file dialog box */
|
||||
g_signal_connect(G_OBJECT(openTb), "clicked", G_CALLBACK(open_file), NULL);
|
||||
g_signal_connect(G_OBJECT(openTb), "clicked", G_CALLBACK(open_file), (gpointer)"openTb");
|
||||
|
||||
/* Hook up the create disk image button to the create disk image dialog box */
|
||||
g_signal_connect(G_OBJECT(createDiskImageTb), "clicked", G_CALLBACK(create_disk_image), NULL);
|
||||
g_signal_connect(G_OBJECT(createDiskImageTb), "clicked", G_CALLBACK(create_disk_image), (gpointer)"createDiskImageTb");
|
||||
|
||||
/* Hook up the new archive image button to the create disk image dialog box */
|
||||
g_signal_connect(G_OBJECT(newArchiveTb), "clicked", G_CALLBACK(new_archive), NULL);
|
||||
g_signal_connect(G_OBJECT(newArchiveTb), "clicked", G_CALLBACK(new_archive), (gpointer)"newArchiveTb");
|
||||
|
||||
/* Hook up the open volume button to the select volume dialog box */
|
||||
g_signal_connect(G_OBJECT(openVolumeTb), "clicked", G_CALLBACK(select_volume), NULL);
|
||||
g_signal_connect(G_OBJECT(openVolumeTb), "clicked", G_CALLBACK(select_volume), (gpointer)"openVolumeTb");
|
||||
|
||||
/* Hook up the print button to the print dialog box */
|
||||
g_signal_connect(G_OBJECT(printTb), "clicked", G_CALLBACK(print_page), (gpointer)window);
|
||||
|
||||
/* Hook up the add files button to the add files dialog box */
|
||||
g_signal_connect(G_OBJECT(addFilesTb), "clicked", G_CALLBACK(add_files), (gpointer)"addFilesTb");
|
||||
|
||||
/* Hook up the add disk image button to the add disk image dialog box */
|
||||
g_signal_connect(G_OBJECT(addDiskImageTb), "clicked", G_CALLBACK(add_disk_image), (gpointer)"addDiskImageTb");
|
||||
|
||||
/* Hook up the view button to the file viewer dialog box */
|
||||
g_signal_connect(G_OBJECT(viewTb), "clicked", G_CALLBACK(file_viewer), (gpointer)"viewTb");
|
||||
|
||||
/* Hook up the extract files button to the extract files dialog box */
|
||||
g_signal_connect(G_OBJECT(extractTb), "clicked", G_CALLBACK(extract_files), (gpointer)"extractTb");
|
||||
|
||||
/* Hook up the test button to the test dialog box */
|
||||
g_signal_connect(G_OBJECT(testTb), "clicked", G_CALLBACK(test), (gpointer)"testTb");
|
||||
|
||||
/* Hook up the rename button to the rename dialog box */
|
||||
g_signal_connect(G_OBJECT(renameTb), "clicked", G_CALLBACK(rename_file), (gpointer)"renameTb");
|
||||
|
||||
/* Hook up the delete button to the delete dialog box */
|
||||
g_signal_connect(G_OBJECT(deleteTb), "clicked", G_CALLBACK(delete_file), (gpointer)"deleteTb");
|
||||
|
||||
/* Hook up the recompress button to the delete dialog box */
|
||||
g_signal_connect(G_OBJECT(recompressTb), "clicked", G_CALLBACK(recompress_files), (gpointer)"recompressTb");
|
||||
|
||||
/* Hook up the edit comment button to the edit comment dialog box */
|
||||
g_signal_connect(G_OBJECT(editCommentTb), "clicked", G_CALLBACK(edit_comment), (gpointer)"editCommentTb");
|
||||
|
||||
/* Hook up the disk sector viewer button to the disk sector viewer popup menu */
|
||||
g_signal_connect(G_OBJECT(diskSectorViewerTb), "clicked", G_CALLBACK(disk_sector_viewer_popup), NULL);
|
||||
g_signal_connect(G_OBJECT(diskSectorViewerTb), "clicked", G_CALLBACK(disk_sector_viewer_popup), (gpointer)"diskSectorViewerTb");
|
||||
|
||||
/* Hook up the disk image converter button to the disk image converter dialog box */
|
||||
g_signal_connect(G_OBJECT(diskImageConverterTb), "clicked", G_CALLBACK(disk_image_converter), (gpointer)"diskImageConverterTb");
|
||||
|
||||
/* Hook up the volume copier button to the volume copier dialog box */
|
||||
/* FIXME */
|
||||
g_signal_connect(G_OBJECT(volumeCopierTb), "clicked", G_CALLBACK(select_volume), (gpointer)"volumeCopierTb");
|
||||
|
||||
/* Hook up the 'Select image convert' button item to the select image conversions dialog box */
|
||||
g_signal_connect(G_OBJECT(diskImageConverterTb), "clicked", G_CALLBACK(select_image_convert), (gpointer)"diskImageConverterTb");
|
||||
|
||||
/* Hook up the merge sst images button to the merge sst images dialog box */
|
||||
g_signal_connect(G_OBJECT(mergeSSTImagesTb), "clicked", G_CALLBACK(select_first_sst_image), (gpointer)"mergeSSTImagesTb");
|
||||
|
||||
/* Hook up the exit button to the quit function */
|
||||
g_signal_connect(G_OBJECT(exitTb), "clicked", G_CALLBACK(gtk_main_quit), NULL);
|
||||
g_signal_connect(G_OBJECT(exitTb), "clicked", G_CALLBACK(gtk_main_quit), (gpointer)"exitTb");
|
||||
|
||||
/* Add the tool bar to the vbox */
|
||||
gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 5);
|
||||
|
||||
/*button = gtk_button_new_with_label("Hello Window");
|
||||
gtk_container_add(GTK_CONTAINER(vbox), button);
|
||||
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gtk_main_quit), NULL);*/
|
||||
|
||||
/* Add the status bar */
|
||||
statusbar = gtk_statusbar_new();
|
||||
gtk_box_pack_end(GTK_BOX(vbox), statusbar, FALSE, TRUE, 0);
|
||||
|
|
44
calvados.h
44
calvados.h
|
@ -6,12 +6,16 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/* Main window size */
|
||||
#define WINDOW_WIDTH 1300
|
||||
#define WINDOW_HEIGHT 725
|
||||
#define LIST_WIDTH 1280
|
||||
#define LIST_HEIGHT 705
|
||||
|
||||
/* Prototypes */
|
||||
void close_dialog(GtkWidget *widget, gpointer data);
|
||||
void closing_dialog(GtkWidget *widget, gpointer data);
|
||||
void select_volume();
|
||||
void select_volume(GtkWidget *widget, gpointer data);
|
||||
void show_about(GtkWidget *widget, gpointer data);
|
||||
void disk_sector_viewer_popup();
|
||||
void okfunc_create_disk_image(GtkWidget *widget, gpointer data);
|
||||
|
@ -22,6 +26,44 @@ void create_disk_image();
|
|||
void do_open_file(char *filename);
|
||||
void open_file();
|
||||
void save_to_file(char *filename);
|
||||
void do_new_archive(char *filename);
|
||||
void new_archive();
|
||||
void preferences();
|
||||
void print_page(GtkWidget *widget, gpointer user_data);
|
||||
void add_files();
|
||||
GtkWidget *create_radio(GtkWidget *box, GSList **group, char *rLabel);
|
||||
void acceptfunc_add_files(GtkWidget *widget, gpointer data);
|
||||
void help_func_add_files(GtkWidget *widget, gpointer data);
|
||||
void extract_files();
|
||||
void extractfunc_extract_files(GtkWidget *widget, gpointer data);
|
||||
void help_func_extract_files(GtkWidget *widget, gpointer data);
|
||||
void disk_image_converter(GtkWidget *widget, gpointer data);
|
||||
void do_image_converter(char *filename);
|
||||
void do_add_files(char *filename);
|
||||
void archive_info();
|
||||
void help_func_archive_info(GtkWidget *widget, gpointer data);
|
||||
void delete_file(GtkWidget *widget, gpointer data);
|
||||
void rename_file(GtkWidget *widget, gpointer data);
|
||||
void select_first_sst_image(GtkWidget *widget, gpointer data);
|
||||
void select_image_convert(GtkWidget *widget, gpointer data);
|
||||
void recompress_files(GtkWidget *widget, gpointer data);
|
||||
void show_error(GtkWidget *widget, gpointer data, char *message);
|
||||
GtkWidget *display_image(GtkWidget *widget, gpointer data, GtkWidget *mw_box);
|
||||
void file_viewer(GtkWidget *widget, gpointer data);
|
||||
void donefunc_file_viewer(GtkWidget *widget, gpointer data);
|
||||
void help_func_file_viewer(GtkWidget *widget, gpointer data);
|
||||
void add_disk_image(GtkWidget *widget, gpointer data);
|
||||
void test(GtkWidget *widget, gpointer data);
|
||||
void edit_comment(GtkWidget *widget, gpointer data);
|
||||
void findfunc_file_viewer(GtkWidget *widget, gpointer data);
|
||||
void bulk_disk_image_converter(GtkWidget *widget, gpointer data);
|
||||
void close_menu_item(GtkWidget *widget, gpointer data);
|
||||
void save_changes(GtkWidget *widget, gpointer data);
|
||||
void reopen_menu_item(GtkWidget *widget, gpointer data);
|
||||
void copy_menu_item(GtkWidget *widget, gpointer data);
|
||||
void paste(GtkWidget *widget, gpointer data);
|
||||
void paste_special(GtkWidget *widget, gpointer data);
|
||||
void find(GtkWidget *widget, gpointer data);
|
||||
void select_all(GtkWidget *widget, gpointer data);
|
||||
void invert_selection(GtkWidget *widget, gpointer data);
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* close_menu_item()
|
||||
*
|
||||
* Close from the menu.
|
||||
*
|
||||
*/
|
||||
void close_menu_item(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Close function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* copy_menu_item()
|
||||
*
|
||||
* Copy from the menu.
|
||||
*
|
||||
*/
|
||||
void copy_menu_item(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Copy function goes here.\n");
|
||||
}
|
||||
|
|
@ -1,8 +1,73 @@
|
|||
#include <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <gdk/gdkkeysyms-compat.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
GtkWidget *allocateDOSTracksCb;
|
||||
GtkWidget *diskVolumeEntry;
|
||||
GtkWidget *prodosVolumeEntry;
|
||||
GtkWidget *pascalVolumeEntry;
|
||||
GtkWidget *hfsVolumeEntry;
|
||||
GtkWidget *blocksEntry;
|
||||
GtkWidget *blocksLabel;
|
||||
|
||||
/*
|
||||
*
|
||||
* Grey out radio buttons, checkboxes and entries as appropriate
|
||||
* for filesystem radio button group.
|
||||
*
|
||||
*/
|
||||
void filesystemRbCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
if ((strcmp((char *)data, "dos32Rb") == 0) ||
|
||||
(strcmp((char *)data, "dos33Rb") == 0)) {
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, TRUE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, TRUE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, FALSE);
|
||||
} else if (strcmp((char *)data, "prodosRb") == 0) {
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, FALSE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, TRUE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, FALSE);
|
||||
} else if (strcmp((char *)data, "pascalRb") == 0) {
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, FALSE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, TRUE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, FALSE);
|
||||
} else if (strcmp((char *)data, "hfsRb") == 0) {
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, FALSE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, TRUE);
|
||||
} else if (strcmp((char *)data, "blankRb") == 0) {
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, FALSE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void newDiskSizeRbCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
if (strcmp((char *)data, "specifyRb") == 0) {
|
||||
gtk_widget_set_sensitive(blocksEntry, TRUE);
|
||||
gtk_widget_set_sensitive(blocksLabel, TRUE);
|
||||
} else {
|
||||
gtk_widget_set_sensitive(blocksEntry, FALSE);
|
||||
gtk_widget_set_sensitive(blocksLabel, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* create_disk_image()
|
||||
|
@ -12,7 +77,7 @@
|
|||
*/
|
||||
void create_disk_image()
|
||||
{
|
||||
GtkWidget *dialog_window;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *help_button;
|
||||
|
@ -37,6 +102,7 @@ void create_disk_image()
|
|||
GtkWidget *pascalRb;
|
||||
GtkWidget *hfsRb;
|
||||
GtkWidget *blankRb;
|
||||
GSList *filesystemRbGroup = NULL;
|
||||
GtkWidget *s140kRb;
|
||||
GtkWidget *s800kRb;
|
||||
GtkWidget *s14MRb;
|
||||
|
@ -44,38 +110,37 @@ void create_disk_image()
|
|||
GtkWidget *s16MBRb;
|
||||
GtkWidget *s20MBRb;
|
||||
GtkWidget *s32MBRb;
|
||||
GtkWidget *specifyRb;
|
||||
GtkWidget *blocksEntry;
|
||||
GtkWidget *blocksLabel;
|
||||
GtkWidget *specifyHbox;
|
||||
GtkWidget *allocateDOSTracksCb;
|
||||
GtkWidget *specifyRb;
|
||||
GSList *newDiskSizeRbGroup = NULL;
|
||||
/*GtkWidget *allocateDOSTracksCb;*/
|
||||
GtkWidget *diskVolumeLabel;
|
||||
GtkWidget *diskVolumeEntry;
|
||||
/*GtkWidget *diskVolumeEntry;*/
|
||||
GtkWidget *diskVolumeHbox;
|
||||
GtkWidget *prodosVolumeLabel;
|
||||
GtkWidget *prodosVolumeEntry;
|
||||
/*GtkWidget *prodosVolumeEntry;*/
|
||||
GtkWidget *pascalVolumeLabel;
|
||||
GtkWidget *pascalVolumeEntry;
|
||||
/*GtkWidget *pascalVolumeEntry;*/
|
||||
GtkWidget *hfsVolumeLabel;
|
||||
GtkWidget *hfsVolumeEntry;
|
||||
/*GtkWidget *hfsVolumeEntry;*/
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog_window = gtk_dialog_new();
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog_window), "destroy",
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog_window);
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog_window), "Create Disk Image");
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Create Disk Image");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog_window), 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/* Two columns top portion of dialog vbox */
|
||||
hbox1 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), hbox1, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox1, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(hbox1);
|
||||
|
||||
|
@ -138,68 +203,36 @@ void create_disk_image()
|
|||
gtk_container_add(GTK_CONTAINER(hfsOptionsFrame), hfsOptionsVbox);
|
||||
gtk_widget_show(hfsOptionsVbox);
|
||||
|
||||
dos32Rb = gtk_radio_button_new_with_label(NULL, "DOS 3.2 (13-sector)");
|
||||
dos33Rb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(dos32Rb), "DOS 3.3");
|
||||
prodosRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(dos33Rb), "ProDOS");
|
||||
pascalRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(prodosRb), "Pascal");
|
||||
hfsRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(pascalRb), "HFS");
|
||||
blankRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(hfsRb), "Blank");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), dos32Rb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), dos33Rb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), prodosRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), pascalRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), hfsRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filesystemVbox), blankRb, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(dos32Rb);
|
||||
gtk_widget_show(dos33Rb);
|
||||
gtk_widget_show(prodosRb);
|
||||
gtk_widget_show(pascalRb);
|
||||
gtk_widget_show(hfsRb);
|
||||
gtk_widget_show(blankRb);
|
||||
|
||||
s140kRb = gtk_radio_button_new_with_label(NULL, "140KB (5.25\" floppy)");
|
||||
s800kRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s140kRb), "800KB (3.5\" floppy)");
|
||||
s14MRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s800kRb), "1.4MB (3.5\" PC floppy)");
|
||||
s5MBRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s14MRb), "5MB");
|
||||
s16MBRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s5MBRb), "16MB");
|
||||
s20MBRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s16MBRb), "20MB");
|
||||
s32MBRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s20MBRb), "32MB (largest ProDOS volume)");
|
||||
specifyRb = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(s32MBRb), "Specify size:");
|
||||
dos32Rb = create_radio(filesystemVbox, &filesystemRbGroup, "DOS 3.2 (13-sector)");
|
||||
dos33Rb = create_radio(filesystemVbox, &filesystemRbGroup, "DOS 3.3");
|
||||
prodosRb = create_radio(filesystemVbox, &filesystemRbGroup, "ProDOS");
|
||||
pascalRb = create_radio(filesystemVbox, &filesystemRbGroup, "Pascal");
|
||||
hfsRb = create_radio(filesystemVbox, &filesystemRbGroup, "HFS");
|
||||
blankRb = create_radio(filesystemVbox, &filesystemRbGroup, "Blank");
|
||||
|
||||
specifyHbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(specifyHbox);
|
||||
|
||||
s140kRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "140KB (5.25\" floppy)");
|
||||
s800kRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "800KB (3.5\" floppy)");
|
||||
s14MRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "1.4MB (3.5\" PC floppy)");
|
||||
s5MBRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "5MB");
|
||||
s16MBRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "16MB");
|
||||
s20MBRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "20MB");
|
||||
s32MBRb = create_radio(newDiskSizeVbox, &newDiskSizeRbGroup, "32MB (largest ProDOS volume)");
|
||||
specifyRb = create_radio(specifyHbox, &newDiskSizeRbGroup, "Specify size:");
|
||||
|
||||
blocksEntry = gtk_entry_new();
|
||||
gtk_entry_set_max_length(GTK_ENTRY(blocksEntry), 8);
|
||||
gtk_box_pack_start(GTK_BOX(specifyHbox), blocksEntry, TRUE, TRUE, 0);
|
||||
gtk_widget_show(blocksEntry);
|
||||
|
||||
blocksLabel = gtk_label_new(" blocks");
|
||||
gtk_misc_set_alignment(GTK_MISC(blocksLabel), 0, 0.5);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(specifyHbox), specifyRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(specifyHbox), blocksEntry, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(specifyHbox), blocksLabel, TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s140kRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s800kRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s14MRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s5MBRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s16MBRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s20MBRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), s32MBRb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), specifyHbox, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(s140kRb);
|
||||
gtk_widget_show(s800kRb);
|
||||
gtk_widget_show(s14MRb);
|
||||
gtk_widget_show(s5MBRb);
|
||||
gtk_widget_show(s16MBRb);
|
||||
gtk_widget_show(s20MBRb);
|
||||
gtk_widget_show(s32MBRb);
|
||||
gtk_widget_show(specifyRb);
|
||||
gtk_widget_show(blocksEntry);
|
||||
gtk_widget_show(blocksLabel);
|
||||
gtk_widget_show(specifyHbox);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(newDiskSizeVbox), specifyHbox, TRUE, TRUE, 0);
|
||||
|
||||
allocateDOSTracksCb = gtk_check_button_new_with_label("Allocate DOS tracks");
|
||||
|
||||
|
@ -258,6 +291,46 @@ void create_disk_image()
|
|||
gtk_widget_show(hfsVolumeLabel);
|
||||
gtk_widget_show(hfsVolumeEntry);
|
||||
|
||||
/* Set default selections. */
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(prodosRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(s140kRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(allocateDOSTracksCb), TRUE);
|
||||
|
||||
gtk_entry_set_text(GTK_ENTRY(blocksEntry), "280");
|
||||
gtk_entry_set_text(GTK_ENTRY(diskVolumeEntry), "254");
|
||||
gtk_entry_set_text(GTK_ENTRY(prodosVolumeEntry), "NEW.DISK");
|
||||
gtk_entry_set_text(GTK_ENTRY(pascalVolumeEntry), "BLANK");
|
||||
gtk_entry_set_text(GTK_ENTRY(hfsVolumeEntry), "New Disk");
|
||||
|
||||
/* Set default sensitivity to prodos */
|
||||
gtk_widget_set_sensitive(allocateDOSTracksCb, FALSE);
|
||||
gtk_widget_set_sensitive(diskVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(prodosVolumeEntry, TRUE);
|
||||
gtk_widget_set_sensitive(pascalVolumeEntry, FALSE);
|
||||
gtk_widget_set_sensitive(hfsVolumeEntry, FALSE);
|
||||
|
||||
/* Set up callbacks for filesystem frame */
|
||||
gtk_signal_connect(GTK_OBJECT(dos32Rb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"dos32Rb");
|
||||
gtk_signal_connect(GTK_OBJECT(dos33Rb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"dos33Rb");
|
||||
gtk_signal_connect(GTK_OBJECT(prodosRb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"prodosRb");
|
||||
gtk_signal_connect(GTK_OBJECT(pascalRb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"pascalRb");
|
||||
gtk_signal_connect(GTK_OBJECT(hfsRb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"hfsRb");
|
||||
gtk_signal_connect(GTK_OBJECT(blankRb), "clicked", GTK_SIGNAL_FUNC(filesystemRbCallback), (gpointer)"blankRb");
|
||||
|
||||
/* Set up callbacks for new disk size frame */
|
||||
gtk_signal_connect(GTK_OBJECT(s140kRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s140kRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s800kRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s800kRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s14MRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s14MRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s5MBRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s5MBRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s16MBRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s16MBRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s20MBRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s20MBRb");
|
||||
gtk_signal_connect(GTK_OBJECT(s32MBRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"s32MBRb");
|
||||
gtk_signal_connect(GTK_OBJECT(specifyRb), "clicked", GTK_SIGNAL_FUNC(newDiskSizeRbCallback), (gpointer)"specifyRb");
|
||||
|
||||
/* Set default sensitivity to not specify */
|
||||
gtk_widget_set_sensitive(blocksEntry, FALSE);
|
||||
gtk_widget_set_sensitive(blocksLabel, FALSE);
|
||||
|
||||
/*
|
||||
* --- OK button
|
||||
*/
|
||||
|
@ -267,13 +340,13 @@ void create_disk_image()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_create_disk_image),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the OK button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "OK" the default --- */
|
||||
gtk_widget_grab_default(ok_button);
|
||||
|
@ -290,13 +363,13 @@ void create_disk_image()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
@ -310,18 +383,18 @@ void create_disk_image()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_create_disk_image),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), help_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog_window);
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog_window);
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* create_radio()
|
||||
*
|
||||
* Create a radio button. Handles putting them into groups.
|
||||
*
|
||||
*/
|
||||
GtkWidget *create_radio(GtkWidget *box, GSList **group, char *rLabel)
|
||||
{
|
||||
GtkWidget *radio;
|
||||
|
||||
/* --- Get the radio button --- */
|
||||
radio = gtk_radio_button_new_with_label (*group, rLabel);
|
||||
|
||||
*group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio));
|
||||
|
||||
/* --- Pack the radio button into the vertical/horizontal box (box). --- */
|
||||
gtk_box_pack_start(GTK_BOX(box), radio, FALSE, FALSE, 10);
|
||||
|
||||
/* --- Show the widget --- */
|
||||
gtk_widget_show(radio);
|
||||
|
||||
return (radio);
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* delete_file()
|
||||
*
|
||||
* Display yes no question dialog box for file deletion.
|
||||
*
|
||||
*/
|
||||
void delete_file(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
/*g_print("Delete file goes here.\n");*/
|
||||
|
||||
dialog = gtk_message_dialog_new(NULL,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_QUESTION,
|
||||
GTK_BUTTONS_YES_NO,
|
||||
"Delete 1 file?");
|
||||
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Delete?");
|
||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* disk_image_converter()
|
||||
*
|
||||
* Disk image converter file dialog
|
||||
*
|
||||
*/
|
||||
void disk_image_converter(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
|
||||
/* Filter for disk images */
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
/* Filter for all files */
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
/* Creae the file opener dialog */
|
||||
dialog = gtk_file_chooser_dialog_new("Select image to convert",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
/* Add the filters */
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
/* Set disk images filter as default */
|
||||
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||
filename = gtk_file_chooser_get_filename(chooser);
|
||||
do_image_converter(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
void disk_sector_viewer_popup()
|
||||
{
|
||||
GtkWidget *dialog_window;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *openDiskButton;
|
||||
GtkWidget *openVolumeButton;
|
||||
|
@ -20,22 +20,22 @@ void disk_sector_viewer_popup()
|
|||
GtkWidget *cancelButton;
|
||||
|
||||
/* --- Create a dialog window --- */
|
||||
dialog_window = gtk_dialog_new();
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the destroy button --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog_window), "destroy",
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(gtk_widget_destroyed),
|
||||
&dialog_window);
|
||||
&dialog);
|
||||
|
||||
/* --- Add a title to the window --- */
|
||||
/*gtk_window_set_title(GTK_WINDOW(dialog_window), "Disk sector viewer");*/
|
||||
gtk_window_set_title(GTK_WINDOW(dialog_window), " ");
|
||||
/*gtk_window_set_title(GTK_WINDOW(dialog), "Disk sector viewer");*/
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), " ");
|
||||
|
||||
/* --- Create a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog_window), 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, TRUE, TRUE, 0);
|
||||
gtk_widget_show(vbox);
|
||||
|
||||
/*
|
||||
|
@ -48,7 +48,7 @@ void disk_sector_viewer_popup()
|
|||
/* --- Need to close the window if they press "ok" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(openDiskButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(vbox), openDiskButton, TRUE, TRUE, 0);
|
||||
|
@ -66,7 +66,7 @@ void disk_sector_viewer_popup()
|
|||
/* --- Need to close the window if they press "ok" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(openVolumeButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(vbox), openVolumeButton, TRUE, TRUE, 0);
|
||||
|
@ -84,7 +84,7 @@ void disk_sector_viewer_popup()
|
|||
/* --- Need to close the window if they press "ok" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(openArchiveButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(vbox), openArchiveButton, TRUE, TRUE, 0);
|
||||
|
@ -102,7 +102,7 @@ void disk_sector_viewer_popup()
|
|||
/* --- Need to close the window if they press "ok" --- */
|
||||
gtk_signal_connect(GTK_OBJECT(cancelButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow it to be the default button --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancelButton, GTK_CAN_DEFAULT);
|
||||
|
@ -117,8 +117,8 @@ void disk_sector_viewer_popup()
|
|||
gtk_widget_show(cancelButton);
|
||||
|
||||
/* --- Make the dialog visible --- */
|
||||
gtk_widget_show(dialog_window);
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
gtk_grab_add(dialog_window);
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* do_add_files()
|
||||
*
|
||||
* Actually add files
|
||||
*
|
||||
*/
|
||||
void do_add_files(char *filename)
|
||||
{
|
||||
g_print("Do add files goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* do_image_converter()
|
||||
*
|
||||
* Convert an image.
|
||||
*
|
||||
*/
|
||||
void do_image_converter(char *filename)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Image converter function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* do_new_archive()
|
||||
*
|
||||
* Actually create a new archive
|
||||
*
|
||||
*/
|
||||
void do_new_archive(char *filename)
|
||||
{
|
||||
g_print("Do new archive goes here.\n");
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
void do_open_file(char *filename)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Open file function goes here.\n");
|
||||
/* --- Display message --- */
|
||||
g_print("Open file function goes here.\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* donefunc_file_viewer()
|
||||
*
|
||||
* Done Function for file viewer
|
||||
*
|
||||
* Show that the "Done" button was pressed
|
||||
*
|
||||
*/
|
||||
void donefunc_file_viewer(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("File viewer done function goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* edit_comment()
|
||||
*
|
||||
* Edit a comment about a file.
|
||||
*
|
||||
*/
|
||||
void edit_comment(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *help_button;
|
||||
|
||||
g_print("edit comment goes here\n");
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Edit Comment");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/*
|
||||
* --- OK button
|
||||
*/
|
||||
|
||||
/* --- Create the "OK" button --- */
|
||||
ok_button = gtk_button_new_with_label("OK");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the OK button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "OK" the default --- */
|
||||
gtk_widget_grab_default(ok_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(ok_button);
|
||||
|
||||
/*
|
||||
* --- Cancel button
|
||||
*/
|
||||
|
||||
/* --- Create the "Cancel" button --- */
|
||||
cancel_button = gtk_button_new_with_label("Cancel");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
help_button = gtk_button_new_with_label("Help");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,379 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
GtkWidget *extractAllFilesRb;
|
||||
GtkWidget *convertToNonAppleIIFormatsCb;
|
||||
GtkWidget *extractDisksAs2MGCb;
|
||||
GtkWidget *dontConvertTextFilesRb;
|
||||
GtkWidget *autoDetectConvertFilesWithRb;
|
||||
GtkWidget *stripHighASCIIFilesCb;
|
||||
GtkWidget *dataForksCb;
|
||||
GtkWidget *resourceForksCb;
|
||||
GtkWidget *diskImagesCb;
|
||||
GtkWidget *addFileAttributePreservationCb;
|
||||
GtkWidget *addTypeExtensionCb;
|
||||
|
||||
/* FIXME -- need to add a callback to the folder chooser to un-grey extract selected files radio button when there are selections */
|
||||
|
||||
void filesToExtractRbCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
g_print("clicked %s\n", (char *)data);
|
||||
}
|
||||
|
||||
|
||||
void textConversionRbCallback2(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
/*g_print("clicked %s\n", (char *)data);*/
|
||||
|
||||
if (strcmp((char *)data, "dontConvertTextFilesRb") == 0) {
|
||||
gtk_widget_set_sensitive(stripHighASCIIFilesCb, FALSE);
|
||||
} else {
|
||||
gtk_widget_set_sensitive(stripHighASCIIFilesCb, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void configureToPreserveAppleIIFormatsCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
g_print("clicked %s\n", (char *)data);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(extractAllFilesRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(convertToNonAppleIIFormatsCb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(extractDisksAs2MGCb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dontConvertTextFilesRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(autoDetectConvertFilesWithRb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stripHighASCIIFilesCb), FALSE);
|
||||
gtk_widget_set_sensitive(stripHighASCIIFilesCb, FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dataForksCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resourceForksCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(diskImagesCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(addFileAttributePreservationCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(addTypeExtensionCb), FALSE);
|
||||
}
|
||||
|
||||
|
||||
void configureForEasyAccessInLinuxCallback(GtkWidget *widget, gpointer *data)
|
||||
{
|
||||
g_print("clicked %s\n", (char *)data);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(extractAllFilesRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(convertToNonAppleIIFormatsCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(extractDisksAs2MGCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dontConvertTextFilesRb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(autoDetectConvertFilesWithRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stripHighASCIIFilesCb), TRUE);
|
||||
gtk_widget_set_sensitive(stripHighASCIIFilesCb, TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dataForksCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resourceForksCb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(diskImagesCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(addFileAttributePreservationCb), FALSE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(addTypeExtensionCb), TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* extract_files()
|
||||
*
|
||||
* Extract files dialog box
|
||||
*
|
||||
*/
|
||||
void extract_files()
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *chooser_dialog;
|
||||
GtkWidget *hbox1;
|
||||
GtkWidget *vboxl;
|
||||
GtkWidget *vboxr;
|
||||
GtkWidget *hbox2;
|
||||
GtkWidget *folderLabel;
|
||||
GtkWidget *folderFileChooserButton;
|
||||
GtkWidget *filesToExtractFrame;
|
||||
GtkWidget *filesToExtractVbox;
|
||||
GSList *filesToExtractRbGroup = NULL;
|
||||
GtkWidget *extractNSelectedFilesRb;
|
||||
GtkWidget *formatConversionFrame;
|
||||
GtkWidget *formatConversionVbox;
|
||||
GtkWidget *textConversionFrame;
|
||||
GtkWidget *textConversionVbox;
|
||||
GSList *textConversionRbGroup = NULL;
|
||||
GtkWidget *convertTextFilesByFileTypeRb;
|
||||
GtkWidget *convertAllFilesRb;
|
||||
GtkWidget *partsToExtractFrame;
|
||||
GtkWidget *partsToExtractVbox;
|
||||
GtkWidget *filenamesFrame;
|
||||
GtkWidget *filenamesVbox;
|
||||
GtkWidget *miscellaneousFrame;
|
||||
GtkWidget *miscellaneousVbox;
|
||||
GtkWidget *stripFolderNamesCb;
|
||||
GtkWidget *overwriteExistingFilesCb;
|
||||
GtkWidget *configureToPreserveAppleIIFormatsButton;
|
||||
GtkWidget *configureForEasyAccessInLinuxButton;
|
||||
GtkWidget *extract_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *help_button;
|
||||
/* For getting user's home directory */
|
||||
struct passwd *pw;
|
||||
const char *homedir;
|
||||
|
||||
/* Get their home directory for use in folder picker */
|
||||
if ((homedir = getenv("HOME")) == NULL) {
|
||||
pw = getpwuid(getuid());
|
||||
homedir = pw->pw_dir;
|
||||
}
|
||||
|
||||
g_print("homedir=%s", homedir);
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Extract Files");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/* Create file chooser dialog */
|
||||
chooser_dialog = gtk_file_chooser_dialog_new("Select folder",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
folderLabel = gtk_label_new("Folder where files will be extracted:");
|
||||
gtk_widget_show(folderLabel);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), folderLabel, TRUE, TRUE, 0);
|
||||
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser_dialog), homedir);
|
||||
|
||||
folderFileChooserButton = gtk_file_chooser_button_new_with_dialog(chooser_dialog);
|
||||
gtk_widget_show(folderFileChooserButton);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), folderFileChooserButton, TRUE, TRUE, 0);
|
||||
|
||||
hbox1 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(hbox1);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox1, TRUE, TRUE, 0);
|
||||
|
||||
vboxl = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vboxl);
|
||||
gtk_box_pack_start(GTK_BOX(hbox1), vboxl, TRUE, TRUE, 0);
|
||||
|
||||
vboxr = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(vboxr);
|
||||
gtk_box_pack_start(GTK_BOX(hbox1), vboxr, TRUE, TRUE, 0);
|
||||
|
||||
filesToExtractFrame = gtk_frame_new("Files to extract");
|
||||
gtk_widget_show(filesToExtractFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxl), filesToExtractFrame, TRUE, TRUE, 0);
|
||||
|
||||
filesToExtractVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(filesToExtractVbox);
|
||||
gtk_container_add(GTK_CONTAINER(filesToExtractFrame), filesToExtractVbox);
|
||||
|
||||
extractNSelectedFilesRb = create_radio(filesToExtractVbox, &filesToExtractRbGroup, "Extract N selected files");
|
||||
extractAllFilesRb = create_radio(filesToExtractVbox, &filesToExtractRbGroup, "Extract all files");
|
||||
|
||||
/* Set default selected item */
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(extractAllFilesRb), TRUE);
|
||||
|
||||
/* Default grey out extract selected files radio button */
|
||||
gtk_widget_set_sensitive(extractNSelectedFilesRb, FALSE);
|
||||
|
||||
/* Set up callbacks for files to extract frame */
|
||||
gtk_signal_connect(GTK_OBJECT(extractNSelectedFilesRb), "clicked", GTK_SIGNAL_FUNC(filesToExtractRbCallback), (gpointer)"extractNSelectedFilesRb");
|
||||
gtk_signal_connect(GTK_OBJECT(extractAllFilesRb), "clicked", GTK_SIGNAL_FUNC(filesToExtractRbCallback), (gpointer)"extractAllFilesRb");
|
||||
|
||||
formatConversionFrame = gtk_frame_new("Format conversion");
|
||||
gtk_widget_show(formatConversionFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxl), formatConversionFrame, TRUE, TRUE, 0);
|
||||
|
||||
formatConversionVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(formatConversionVbox);
|
||||
gtk_container_add(GTK_CONTAINER(formatConversionFrame), formatConversionVbox);
|
||||
|
||||
convertToNonAppleIIFormatsCb = gtk_check_button_new_with_label("Convert to non-Apple II formats");
|
||||
gtk_widget_show(convertToNonAppleIIFormatsCb);
|
||||
gtk_box_pack_start(GTK_BOX(formatConversionVbox), convertToNonAppleIIFormatsCb, TRUE, TRUE, 0);
|
||||
extractDisksAs2MGCb = gtk_check_button_new_with_label("Extract disks as 2MG");
|
||||
gtk_widget_show(extractDisksAs2MGCb);
|
||||
gtk_box_pack_start(GTK_BOX(formatConversionVbox), extractDisksAs2MGCb, TRUE, TRUE, 0);
|
||||
|
||||
textConversionFrame = gtk_frame_new("Text conversion");
|
||||
gtk_widget_show(textConversionFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxl), textConversionFrame, TRUE, TRUE, 0);
|
||||
|
||||
textConversionVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(textConversionVbox);
|
||||
gtk_container_add(GTK_CONTAINER(textConversionFrame), textConversionVbox);
|
||||
|
||||
dontConvertTextFilesRb = create_radio(textConversionVbox, &textConversionRbGroup, "Don't convert text files");
|
||||
convertTextFilesByFileTypeRb = create_radio(textConversionVbox, &textConversionRbGroup, "Convert text files by file type");
|
||||
autoDetectConvertFilesWithRb = create_radio(textConversionVbox, &textConversionRbGroup, "Auto-detect & convert files with");
|
||||
convertAllFilesRb = create_radio(textConversionVbox, &textConversionRbGroup, "Convert All files");
|
||||
stripHighASCIIFilesCb = gtk_check_button_new_with_label("Strip \"high ASCII\" files");
|
||||
gtk_widget_show(stripHighASCIIFilesCb);
|
||||
gtk_box_pack_start(GTK_BOX(textConversionVbox), stripHighASCIIFilesCb, TRUE, TRUE, 0);
|
||||
|
||||
/* Set default active and selected items */
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dontConvertTextFilesRb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(stripHighASCIIFilesCb), TRUE);
|
||||
|
||||
/* Default grey out strip high ascii files checkbox */
|
||||
gtk_widget_set_sensitive(stripHighASCIIFilesCb, FALSE);
|
||||
|
||||
/* Set up callbacks for text conversion frame */
|
||||
gtk_signal_connect(GTK_OBJECT(dontConvertTextFilesRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback2), (gpointer)"dontConvertTextFilesRb");
|
||||
gtk_signal_connect(GTK_OBJECT(convertTextFilesByFileTypeRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback2), (gpointer)"convertTextFilesByFileTypeRb");
|
||||
gtk_signal_connect(GTK_OBJECT(autoDetectConvertFilesWithRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback2), (gpointer)"autoDetectConvertFilesWithRb");
|
||||
gtk_signal_connect(GTK_OBJECT(convertAllFilesRb), "clicked", GTK_SIGNAL_FUNC(textConversionRbCallback2), (gpointer)"convertAllFilesRb");
|
||||
|
||||
partsToExtractFrame = gtk_frame_new("Parts to extract");
|
||||
gtk_widget_show(partsToExtractFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxr), partsToExtractFrame, TRUE, TRUE, 0);
|
||||
|
||||
partsToExtractVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(partsToExtractVbox);
|
||||
gtk_container_add(GTK_CONTAINER(partsToExtractFrame), partsToExtractVbox);
|
||||
|
||||
dataForksCb = gtk_check_button_new_with_label("Data forks");
|
||||
gtk_widget_show(dataForksCb);
|
||||
gtk_box_pack_start(GTK_BOX(partsToExtractVbox), dataForksCb, TRUE, TRUE, 0);
|
||||
resourceForksCb = gtk_check_button_new_with_label("Resource forks");
|
||||
gtk_widget_show(resourceForksCb);
|
||||
gtk_box_pack_start(GTK_BOX(partsToExtractVbox), resourceForksCb, TRUE, TRUE, 0);
|
||||
diskImagesCb = gtk_check_button_new_with_label("Disk images");
|
||||
gtk_widget_show(diskImagesCb);
|
||||
gtk_box_pack_start(GTK_BOX(partsToExtractVbox), diskImagesCb, TRUE, TRUE, 0);
|
||||
|
||||
/* Set default selected items */
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dataForksCb), TRUE);
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(diskImagesCb), TRUE);
|
||||
|
||||
filenamesFrame = gtk_frame_new("Filenames");
|
||||
gtk_widget_show(filenamesFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxr), filenamesFrame, TRUE, TRUE, 0);
|
||||
|
||||
filenamesVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(filenamesVbox);
|
||||
gtk_container_add(GTK_CONTAINER(filenamesFrame), filenamesVbox);
|
||||
|
||||
addFileAttributePreservationCb = gtk_check_button_new_with_label("Add file attribute preservation");
|
||||
gtk_widget_show(addFileAttributePreservationCb);
|
||||
gtk_box_pack_start(GTK_BOX(filenamesVbox), addFileAttributePreservationCb, TRUE, TRUE, 0);
|
||||
addTypeExtensionCb = gtk_check_button_new_with_label("Add type extension");
|
||||
gtk_widget_show(addTypeExtensionCb);
|
||||
gtk_box_pack_start(GTK_BOX(filenamesVbox), addTypeExtensionCb, TRUE, TRUE, 0);
|
||||
|
||||
/* Set default selected item */
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(addFileAttributePreservationCb), TRUE);
|
||||
|
||||
miscellaneousFrame = gtk_frame_new("Miscellaneous");
|
||||
gtk_widget_show(miscellaneousFrame);
|
||||
gtk_box_pack_start(GTK_BOX(vboxr), miscellaneousFrame, TRUE, TRUE, 0);
|
||||
|
||||
miscellaneousVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_show(miscellaneousVbox);
|
||||
gtk_container_add(GTK_CONTAINER(miscellaneousFrame), miscellaneousVbox);
|
||||
|
||||
stripFolderNamesCb = gtk_check_button_new_with_label("Strip folder names");
|
||||
gtk_widget_show(stripFolderNamesCb);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), stripFolderNamesCb, TRUE, TRUE, 0);
|
||||
overwriteExistingFilesCb = gtk_check_button_new_with_label("Overwrite existing files");
|
||||
gtk_widget_show(overwriteExistingFilesCb);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), overwriteExistingFilesCb, TRUE, TRUE, 0);
|
||||
|
||||
hbox2 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(hbox2);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hbox2, TRUE, TRUE, 0);
|
||||
|
||||
configureToPreserveAppleIIFormatsButton = gtk_button_new_with_label("Configure to preserve Apple II formats");
|
||||
gtk_widget_show(configureToPreserveAppleIIFormatsButton);
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), configureToPreserveAppleIIFormatsButton, TRUE, TRUE, 0);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(configureToPreserveAppleIIFormatsButton), "clicked", GTK_SIGNAL_FUNC(configureToPreserveAppleIIFormatsCallback), (gpointer)"configureToPreserveAppleIIFormatsButton");
|
||||
|
||||
configureForEasyAccessInLinuxButton = gtk_button_new_with_label("Configure for easy access in Linux");
|
||||
gtk_widget_show(configureForEasyAccessInLinuxButton);
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), configureForEasyAccessInLinuxButton, TRUE, TRUE, 0);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(configureForEasyAccessInLinuxButton), "clicked", GTK_SIGNAL_FUNC(configureForEasyAccessInLinuxCallback), (gpointer)"configureForEasyAccessInLinuxButton");
|
||||
|
||||
/*
|
||||
* --- Extract button
|
||||
*/
|
||||
|
||||
/* --- Create the "Extract" button --- */
|
||||
extract_button = gtk_button_new_with_label("Extract");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(extract_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(extractfunc_extract_files),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Extract" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(extract_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the Extract button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), extract_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "Extract" the default --- */
|
||||
gtk_widget_grab_default(extract_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(extract_button);
|
||||
|
||||
/*
|
||||
* --- Cancel button
|
||||
*/
|
||||
|
||||
/* --- Create the "Cancel" button --- */
|
||||
cancel_button = gtk_button_new_with_label("Cancel");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
help_button = gtk_button_new_with_label("Help");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_extract_files),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* extractunc_extract_files()
|
||||
*
|
||||
* Extract Function for extract files
|
||||
*
|
||||
* Show that the "Extract" button was pressed
|
||||
*
|
||||
*/
|
||||
void extractfunc_extract_files(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Extract function goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
}
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* file_viewer()
|
||||
*
|
||||
* Display file viewer dialog box
|
||||
*
|
||||
*/
|
||||
void file_viewer(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *scrolled_window;
|
||||
GtkWidget *table;
|
||||
GtkWidget *hbox1;
|
||||
GtkWidget *dataForkRb;
|
||||
GtkWidget *resourceForkRb;
|
||||
GtkWidget *commentRb;
|
||||
GtkWidget *fileCombo;
|
||||
GtkWidget *next_button;
|
||||
GtkWidget *prev_button;
|
||||
GtkWidget *best_button;
|
||||
GtkWidget *raw_button;
|
||||
GtkWidget *find_button;
|
||||
GtkWidget *hbox2;
|
||||
GtkWidget *print_button;
|
||||
GtkWidget *font_button;
|
||||
GtkWidget *done_button;
|
||||
GtkWidget *help_button;
|
||||
|
||||
g_print("File viewer dialog box goes here\n");
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "File Viewer");
|
||||
/* FIXME -- need to put filename in title. */
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/* create a new scrolled window. */
|
||||
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
|
||||
|
||||
gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 10);
|
||||
|
||||
/* the policy is one of GTK_POLICY AUTOMATIC, or GTK_POLICY_ALWAYS.
|
||||
* GTK_POLICY_AUTOMATIC will automatically decide whether you need
|
||||
* scrollbars, whereas GTK_POLICY_ALWAYS will always leave the scrollbars
|
||||
* there. The first one is the horizontal scrollbar, the second,
|
||||
* the vertical. */
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
|
||||
/* The dialog window is created with a vbox packed into it. */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrolled_window, TRUE, TRUE, 0);
|
||||
gtk_widget_show(scrolled_window);
|
||||
|
||||
/* FIXME -- should display the file here */
|
||||
/* create a table of 10 by 10 squares. */
|
||||
table = gtk_table_new(10, 10, FALSE);
|
||||
|
||||
/* set the spacing to 10 on x and 10 on y */
|
||||
gtk_table_set_row_spacings(GTK_TABLE(table), 10);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
|
||||
|
||||
/* pack the table into the scrolled window */
|
||||
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), table);
|
||||
gtk_widget_show(table);
|
||||
|
||||
hbox1 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), hbox1, TRUE, TRUE, 0);
|
||||
gtk_widget_show(hbox1);
|
||||
|
||||
hbox2 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox1), hbox2, TRUE, TRUE, 0);
|
||||
gtk_widget_show(hbox2);
|
||||
|
||||
/*
|
||||
* --- Done button
|
||||
*/
|
||||
|
||||
/* --- Create the "Done" button --- */
|
||||
done_button = gtk_button_new_with_label("Done");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(done_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(donefunc_file_viewer),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Done" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(done_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the Done button to the bottom right --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), done_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "Done" the default --- */
|
||||
gtk_widget_grab_default(done_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(done_button);
|
||||
|
||||
/*
|
||||
* --- Font button
|
||||
*/
|
||||
|
||||
/* --- Create the "Font" button --- */
|
||||
font_button = gtk_button_new_with_label("Font");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(done_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(donefunc_file_viewer),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Font" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(font_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the Font button to the bottom right --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), font_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "Font" the default --- */
|
||||
gtk_widget_grab_default(font_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(font_button);
|
||||
|
||||
/*
|
||||
* --- Find button
|
||||
*/
|
||||
|
||||
/* --- Create the "Find" button --- */
|
||||
find_button = gtk_button_new_with_label("Find");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(done_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(findfunc_file_viewer),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Font" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(find_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the Font button to the bottom right --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), find_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "Find" the default --- */
|
||||
gtk_widget_grab_default(find_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(find_button);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
help_button = gtk_button_new_with_label("Help");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_file_viewer),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(hbox2), done_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* find()
|
||||
*
|
||||
* Find from the menu.
|
||||
*
|
||||
*/
|
||||
void find(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Find function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* findfunc_file_viewer()
|
||||
*
|
||||
* Find Function for file viewer image
|
||||
*
|
||||
* Show that the "Find" button was pressed
|
||||
*
|
||||
*/
|
||||
void findfunc_file_viewer(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Find function for file viewer goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the find dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* help_func_add_files()
|
||||
*
|
||||
* Help Function for add files
|
||||
*
|
||||
* Show that the "Help" button was pressed
|
||||
*
|
||||
*/
|
||||
void help_func_add_files(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for add files goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* help_func_archive_info()
|
||||
*
|
||||
* Help Function for archive info
|
||||
*
|
||||
* Show that the "Help" button was pressed
|
||||
*
|
||||
*/
|
||||
void help_func_archive_info(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for archive info goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
|
@ -14,13 +14,13 @@
|
|||
*/
|
||||
void help_func_create_disk_image(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function goes here.\n");
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for create disk images goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/* Now open the help dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* help_func_extract_files()
|
||||
*
|
||||
* Help Function for extract files
|
||||
*
|
||||
* Show that the "Help" button was pressed
|
||||
*
|
||||
*/
|
||||
void help_func_extract_files(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for extract files goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/* FIXME*/
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* help_func_file_viewer()
|
||||
*
|
||||
* Help Function for file viewer image
|
||||
*
|
||||
* Show that the "Help" button was pressed
|
||||
*
|
||||
*/
|
||||
void help_func_file_viewer(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for file viewer goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
|
@ -14,13 +14,13 @@
|
|||
*/
|
||||
void help_func_select_volume(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Help function goes here.\n");
|
||||
/* --- Display message --- */
|
||||
g_print("Help function for select volume goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
|
||||
/* Now open the help dialog */
|
||||
/* Now open the help dialog */
|
||||
/*FIXME*/
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* invert_selection()
|
||||
*
|
||||
* Invert Selection from the menu.
|
||||
*
|
||||
*/
|
||||
void invert_selection(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Invert Selection function goes here.\n");
|
||||
}
|
||||
|
|
@ -13,24 +13,31 @@
|
|||
void new_archive()
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkFileFilter *fileTypeFilt;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("New Archive",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_SAVE,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
|
||||
|
||||
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), "Desktop");
|
||||
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "new.shk");
|
||||
|
||||
fileTypeFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(fileTypeFilt, "ShrinkIt Archives (*.shk)");
|
||||
gtk_file_filter_add_pattern(fileTypeFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), fileTypeFilt);
|
||||
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
|
||||
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
|
||||
save_to_file(filename);
|
||||
do_new_archive(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
*/
|
||||
void okfunc_create_disk_image(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Create function goes here.\n");
|
||||
/* --- Display message --- */
|
||||
g_print("Create function goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
}
|
||||
|
||||
|
|
|
@ -14,10 +14,10 @@
|
|||
*/
|
||||
void okfunc_select_volume(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Create function goes here.\n");
|
||||
/* --- Display message --- */
|
||||
g_print("Create function goes here.\n");
|
||||
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
/* --- Close it. --- */
|
||||
gtk_widget_destroy(GTK_WIDGET(data));
|
||||
}
|
||||
|
||||
|
|
69
open_file.c
69
open_file.c
|
@ -14,6 +14,62 @@ void open_file()
|
|||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *shrinkItArchivesFilt;
|
||||
GtkFileFilter *binaryIIArchivesFilt;
|
||||
GtkFileFilter *acuArchivesFilt;
|
||||
GtkFileFilter *appleSingleFilesFilt;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
GtkWidget *openAsReadOnlyCb;
|
||||
|
||||
shrinkItArchivesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(shrinkItArchivesFilt, "ShrinkIt Archives");
|
||||
gtk_file_filter_add_pattern(shrinkItArchivesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(shrinkItArchivesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(shrinkItArchivesFilt, "*.[Bb][Xx][Yy]");
|
||||
gtk_file_filter_add_pattern(shrinkItArchivesFilt, "*.[Ss][Ee][Aa]");
|
||||
gtk_file_filter_add_pattern(shrinkItArchivesFilt, "*.[Bb][Ss][Ee]");
|
||||
|
||||
binaryIIArchivesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(binaryIIArchivesFilt, "Binary II Archives");
|
||||
gtk_file_filter_add_pattern(binaryIIArchivesFilt, "*.[Bb][Nn][Yy]");
|
||||
gtk_file_filter_add_pattern(binaryIIArchivesFilt, "*.[Bb][Qq][Yy]");
|
||||
gtk_file_filter_add_pattern(binaryIIArchivesFilt, "*.[Bb][Xx][Yy]");
|
||||
|
||||
acuArchivesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(acuArchivesFilt, "ACU Archives");
|
||||
gtk_file_filter_add_pattern(acuArchivesFilt, "*.[Aa][Cc][Uu]");
|
||||
|
||||
appleSingleFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(appleSingleFilesFilt, "AppleSingle Files");
|
||||
gtk_file_filter_add_pattern(appleSingleFilesFilt, "*.[Aa][Ss]");
|
||||
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Open",
|
||||
NULL,
|
||||
|
@ -24,6 +80,19 @@ void open_file()
|
|||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), shrinkItArchivesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), binaryIIArchivesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), acuArchivesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), appleSingleFilesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
gtk_file_chooser_set_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;
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* paste()
|
||||
*
|
||||
* Paste from the menu.
|
||||
*
|
||||
*/
|
||||
void paste(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Paste function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* paste_special()
|
||||
*
|
||||
* Paste Special from the menu.
|
||||
*
|
||||
*/
|
||||
void paste_special(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Paste Special function goes here.\n");
|
||||
}
|
||||
|
207
preferences.c
207
preferences.c
|
@ -3,6 +3,17 @@
|
|||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* select_temporary_files_folder()
|
||||
*
|
||||
*/
|
||||
void select_temporary_files_folder()
|
||||
{
|
||||
g_print("Select folder function goes here.\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* apply_func_preferences()
|
||||
|
@ -137,7 +148,7 @@ GtkWidget *create_notebook(GtkWidget *window, GtkPositionType pos)
|
|||
*/
|
||||
void preferences()
|
||||
{
|
||||
GtkWidget *dialog_window;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *dialogVbox;
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *generalTab;
|
||||
|
@ -251,38 +262,45 @@ void preferences()
|
|||
GtkWidget *bzip2Cb;
|
||||
GtkWidget *bzip2Label;
|
||||
GtkWidget *filesVbox;
|
||||
GtkWidget *folderForTemporaryFilesHbox;
|
||||
GtkWidget *folderForTemporaryFilesLabel;
|
||||
GtkWidget *folderForTemporaryFilesEntry;
|
||||
GtkWidget *folderForTemporaryFilesButton;
|
||||
GtkWidget *folderForTemporaryFilesImage;
|
||||
GtkWidget *externalFileViewerExtensionsLabel;
|
||||
GtkWidget *externalFileViewerExtensionsEntry;
|
||||
GtkWidget *filesSpacer;
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *apply_button;
|
||||
GtkWidget *help_button;
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
/*dialog_window = gtk_dialog_new();*/
|
||||
dialog_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
/*dialog = gtk_dialog_new();*/
|
||||
dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog_window), "destroy",
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog_window);
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog_window), "Preferences");
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Preferences");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog_window), 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/* --- Set the window size. --- */
|
||||
/*gtk_widget_set_usize(dialog_window, 500, 450);*/
|
||||
/*gtk_widget_set_usize(dialog, 500, 450);*/
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog_window);
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
dialogVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(dialog_window), dialogVbox);
|
||||
gtk_container_add(GTK_CONTAINER(dialog), dialogVbox);
|
||||
gtk_widget_show(dialogVbox);
|
||||
|
||||
/*notebook = create_notebook(dialog_window, GTK_POS_TOP);*/
|
||||
/*notebook = create_notebook(dialog, GTK_POS_TOP);*/
|
||||
notebook = create_notebook(dialogVbox, GTK_POS_TOP);
|
||||
|
||||
/* --- Add pages to the notebook --- */
|
||||
|
@ -313,38 +331,46 @@ void preferences()
|
|||
gtk_widget_show(generalLeftVbox);
|
||||
|
||||
pathnameCb = gtk_check_button_new_with_label("Pathname");
|
||||
typeCb = gtk_check_button_new_with_label("Type");
|
||||
auxTypeCb = gtk_check_button_new_with_label("Aux Type");
|
||||
modDateCb = gtk_check_button_new_with_label("Mod Date");
|
||||
formatCb = gtk_check_button_new_with_label("Format");
|
||||
sizeCb = gtk_check_button_new_with_label("Size");
|
||||
ratioCb = gtk_check_button_new_with_label("Ratio");
|
||||
packedCb = gtk_check_button_new_with_label("Packed");
|
||||
accessCb = gtk_check_button_new_with_label("Access");
|
||||
defaultsButton = gtk_button_new_with_label("Defaults");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), pathnameCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), typeCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), auxTypeCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), modDateCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), formatCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), sizeCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), ratioCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), packedCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), accessCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), defaultsButton, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(pathnameCb);
|
||||
|
||||
typeCb = gtk_check_button_new_with_label("Type");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), typeCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(typeCb);
|
||||
|
||||
auxTypeCb = gtk_check_button_new_with_label("Aux Type");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), auxTypeCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(auxTypeCb);
|
||||
|
||||
modDateCb = gtk_check_button_new_with_label("Mod Date");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), modDateCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(modDateCb);
|
||||
|
||||
formatCb = gtk_check_button_new_with_label("Format");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), formatCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(formatCb);
|
||||
|
||||
sizeCb = gtk_check_button_new_with_label("Size");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), sizeCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(sizeCb);
|
||||
|
||||
ratioCb = gtk_check_button_new_with_label("Ratio");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), ratioCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(ratioCb);
|
||||
|
||||
packedCb = gtk_check_button_new_with_label("Packed");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), packedCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(packedCb);
|
||||
|
||||
accessCb = gtk_check_button_new_with_label("Access");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), accessCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(accessCb);
|
||||
|
||||
defaultsButton = gtk_button_new_with_label("Defaults");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), defaultsButton, TRUE, TRUE, 0);
|
||||
gtk_widget_show(defaultsButton);
|
||||
|
||||
|
||||
/* Left spacer */
|
||||
generalLeftSpacerBox = gtk_button_new_with_label(" ");
|
||||
gtk_box_pack_start(GTK_BOX(generalLeftVbox), generalLeftSpacerBox, TRUE, TRUE, 0);
|
||||
|
@ -358,58 +384,57 @@ void preferences()
|
|||
gtk_widget_show(generalRightVbox);
|
||||
|
||||
nufxArchivesFrame = gtk_frame_new("NuFX (ShrinkIt) archives");
|
||||
filenameMungingFrame = gtk_frame_new("Filename munging");
|
||||
systemFrame = gtk_frame_new("System");
|
||||
miscellaneousFrame = gtk_frame_new("Miscellaneous");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), nufxArchivesFrame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), filenameMungingFrame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), systemFrame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), miscellaneousFrame, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(nufxArchivesFrame);
|
||||
gtk_widget_show(filenameMungingFrame);
|
||||
gtk_widget_show(systemFrame);
|
||||
gtk_widget_show(miscellaneousFrame);
|
||||
|
||||
nufxArchivesVbox = gtk_vbox_new(FALSE, 0);
|
||||
filenameMungingVbox = gtk_vbox_new(FALSE, 0);
|
||||
systemVbox = gtk_vbox_new(FALSE, 0);
|
||||
miscellaneousVbox = gtk_vbox_new(FALSE, 0);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(nufxArchivesFrame), nufxArchivesVbox);
|
||||
gtk_container_add(GTK_CONTAINER(filenameMungingFrame), filenameMungingVbox);
|
||||
gtk_container_add(GTK_CONTAINER(systemFrame), systemVbox);
|
||||
gtk_container_add(GTK_CONTAINER(miscellaneousFrame), miscellaneousVbox);
|
||||
|
||||
gtk_widget_show(nufxArchivesVbox);
|
||||
|
||||
filenameMungingFrame = gtk_frame_new("Filename munging");
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), filenameMungingFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(filenameMungingFrame);
|
||||
filenameMungingVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(filenameMungingFrame), filenameMungingVbox);
|
||||
gtk_widget_show(filenameMungingVbox);
|
||||
|
||||
systemFrame = gtk_frame_new("System");
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), systemFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(systemFrame);
|
||||
systemVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(systemFrame), systemVbox);
|
||||
gtk_widget_show(systemVbox);
|
||||
|
||||
miscellaneousFrame = gtk_frame_new("Miscellaneous");
|
||||
gtk_box_pack_start(GTK_BOX(generalRightVbox), miscellaneousFrame, TRUE, TRUE, 0);
|
||||
gtk_widget_show(miscellaneousFrame);
|
||||
miscellaneousVbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(miscellaneousFrame), miscellaneousVbox);
|
||||
gtk_widget_show(miscellaneousVbox);
|
||||
|
||||
|
||||
/* NuFX frame */
|
||||
mimicShrinkitQuirksCb = gtk_check_button_new_with_label("Mimic ShrinkIt Quirks");
|
||||
handleBadMacArchivesCb = gtk_check_button_new_with_label("Handle \"bad Mac\" archives");
|
||||
reduceErrorCheckingCb = gtk_check_button_new_with_label("Reduce error checking (not recommended)");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(nufxArchivesVbox), mimicShrinkitQuirksCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(nufxArchivesVbox), handleBadMacArchivesCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(nufxArchivesVbox), reduceErrorCheckingCb, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(mimicShrinkitQuirksCb);
|
||||
|
||||
handleBadMacArchivesCb = gtk_check_button_new_with_label("Handle \"bad Mac\" archives");
|
||||
gtk_box_pack_start(GTK_BOX(nufxArchivesVbox), handleBadMacArchivesCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(handleBadMacArchivesCb);
|
||||
|
||||
reduceErrorCheckingCb = gtk_check_button_new_with_label("Reduce error checking (not recommended)");
|
||||
gtk_box_pack_start(GTK_BOX(nufxArchivesVbox), reduceErrorCheckingCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(reduceErrorCheckingCb);
|
||||
|
||||
/* Filename munging frame */
|
||||
displayDOS33FilenamesCb = gtk_check_button_new_with_label("Display DOS 3.3 Filenames in lower case");
|
||||
showSpacesAsUnderscoresCb = gtk_check_button_new_with_label("Show spaces as underscores");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(filenameMungingVbox), displayDOS33FilenamesCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(filenameMungingVbox), showSpacesAsUnderscoresCb, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(displayDOS33FilenamesCb);
|
||||
|
||||
showSpacesAsUnderscoresCb = gtk_check_button_new_with_label("Show spaces as underscores");
|
||||
gtk_box_pack_start(GTK_BOX(filenameMungingVbox), showSpacesAsUnderscoresCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(showSpacesAsUnderscoresCb);
|
||||
|
||||
|
||||
/* System frame */
|
||||
fileTypeAssociationsButton = gtk_button_new_with_label("File type associations");
|
||||
|
||||
|
@ -419,12 +444,11 @@ void preferences()
|
|||
|
||||
/* Miscellaneous frame */
|
||||
stripPathnamesWhenPastingFilesCb = gtk_check_button_new_with_label("Strip pathnames when pasting files");
|
||||
beepWhenActionsCompleteSuccessfullyCb = gtk_check_button_new_with_label("Beep when actions complete successfully");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), stripPathnamesWhenPastingFilesCb, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), beepWhenActionsCompleteSuccessfullyCb, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(stripPathnamesWhenPastingFilesCb);
|
||||
|
||||
beepWhenActionsCompleteSuccessfullyCb = gtk_check_button_new_with_label("Beep when actions complete successfully");
|
||||
gtk_box_pack_start(GTK_BOX(miscellaneousVbox), beepWhenActionsCompleteSuccessfullyCb, TRUE, TRUE, 0);
|
||||
gtk_widget_show(beepWhenActionsCompleteSuccessfullyCb);
|
||||
|
||||
/* Right spacer */
|
||||
|
@ -805,6 +829,49 @@ void preferences()
|
|||
gtk_widget_show(folderForTemporaryFilesLabel);
|
||||
gtk_box_pack_start(GTK_BOX(filesVbox), folderForTemporaryFilesLabel, TRUE, TRUE, 0);
|
||||
|
||||
folderForTemporaryFilesHbox = gtk_hbox_new(FALSE, 0);
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(filesVbox), folderForTemporaryFilesHbox);
|
||||
|
||||
gtk_widget_show(folderForTemporaryFilesHbox);
|
||||
|
||||
folderForTemporaryFilesEntry = gtk_entry_new();
|
||||
gtk_entry_set_max_length(GTK_ENTRY(folderForTemporaryFilesEntry), 255);
|
||||
gtk_widget_set_size_request(folderForTemporaryFilesEntry, 350, 32);
|
||||
gtk_box_pack_start(GTK_BOX(folderForTemporaryFilesHbox), folderForTemporaryFilesEntry, TRUE, TRUE, 0);
|
||||
gtk_widget_show(folderForTemporaryFilesEntry);
|
||||
|
||||
folderForTemporaryFilesImage = gtk_image_new();
|
||||
gtk_image_set_from_file(GTK_IMAGE(folderForTemporaryFilesImage), "images/openTb.png");
|
||||
folderForTemporaryFilesButton = gtk_button_new();
|
||||
gtk_widget_set_size_request(folderForTemporaryFilesButton, 32, 32);
|
||||
gtk_button_set_image((GtkButton *)folderForTemporaryFilesButton, folderForTemporaryFilesImage);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(folderForTemporaryFilesHbox), folderForTemporaryFilesButton, TRUE, TRUE, 0);
|
||||
|
||||
/* You should be getting used to seeing most of these functions by now */
|
||||
gtk_signal_connect(GTK_OBJECT(folderForTemporaryFilesButton), "clicked",
|
||||
GTK_SIGNAL_FUNC(select_temporary_files_folder),
|
||||
(gpointer)"Select Folder");
|
||||
|
||||
gtk_widget_show(folderForTemporaryFilesImage);
|
||||
gtk_widget_show(folderForTemporaryFilesButton);
|
||||
|
||||
externalFileViewerExtensionsLabel = gtk_label_new("External file viewer extensions (separated by semicolons):");
|
||||
gtk_widget_show(externalFileViewerExtensionsLabel);
|
||||
gtk_box_pack_start(GTK_BOX(filesVbox), externalFileViewerExtensionsLabel, TRUE, TRUE, 0);
|
||||
|
||||
externalFileViewerExtensionsEntry = gtk_entry_new();
|
||||
gtk_entry_set_max_length(GTK_ENTRY(externalFileViewerExtensionsEntry), 255);
|
||||
gtk_widget_show(externalFileViewerExtensionsEntry);
|
||||
gtk_box_pack_start(GTK_BOX(filesVbox), externalFileViewerExtensionsEntry, TRUE, TRUE, 0);
|
||||
|
||||
/* spacer */
|
||||
filesSpacer = gtk_button_new_with_label(" ");
|
||||
gtk_widget_set_size_request(filesSpacer, 256, 256);
|
||||
gtk_box_pack_start(GTK_BOX(filesVbox), filesSpacer, TRUE, TRUE, 0);
|
||||
gtk_widget_show(filesSpacer);
|
||||
|
||||
|
||||
/* spacer */
|
||||
/*spacerBox = gtk_button_new_with_label(" ");
|
||||
|
@ -827,7 +894,7 @@ void preferences()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_create_disk_image),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
@ -850,7 +917,7 @@ void preferences()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
@ -870,7 +937,7 @@ void preferences()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(apply_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(apply_func_preferences),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Apply" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(actionHbox), apply_button, TRUE, TRUE, 0);
|
||||
|
@ -887,7 +954,7 @@ void preferences()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_preferences),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(actionHbox), help_button, TRUE, TRUE, 0);
|
||||
|
@ -896,6 +963,6 @@ void preferences()
|
|||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog_window);
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gtk/gtkunixprint.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
GMainLoop *loop;
|
||||
|
||||
/*
|
||||
*
|
||||
* print_end()
|
||||
*
|
||||
*/
|
||||
static void print_end(GtkPrintJob *print_job, gpointer user_data, GError *err)
|
||||
{
|
||||
g_main_loop_quit(loop);
|
||||
g_assert(err == NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* print_page()
|
||||
*
|
||||
*/
|
||||
void print_page(GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
GtkWindow *parent = user_data;
|
||||
GtkPrintJob *print_job;
|
||||
GtkPrinter *printer;
|
||||
GtkPrintSettings *settings;
|
||||
GtkPageSetup *page_setup;
|
||||
GtkWidget *dialog;
|
||||
cairo_t *cr;
|
||||
cairo_surface_t *surface;
|
||||
|
||||
dialog = gtk_print_unix_dialog_new(NULL, parent);
|
||||
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
|
||||
printer = gtk_print_unix_dialog_get_selected_printer(GTK_PRINT_UNIX_DIALOG(dialog));
|
||||
settings = gtk_print_unix_dialog_get_settings(GTK_PRINT_UNIX_DIALOG(dialog));
|
||||
page_setup = gtk_print_unix_dialog_get_page_setup(GTK_PRINT_UNIX_DIALOG(dialog));
|
||||
|
||||
print_job = gtk_print_job_new("Example title", printer, settings, page_setup);
|
||||
surface = gtk_print_job_get_surface(print_job, NULL);
|
||||
|
||||
cr = cairo_create(surface);
|
||||
|
||||
cairo_set_source_rgb(cr, 0.6, 0.6, 0.6);
|
||||
cairo_set_line_width(cr, 1);
|
||||
|
||||
cairo_rectangle(cr, 20, 20, 120, 80);
|
||||
cairo_rectangle(cr, 180, 20, 80, 80);
|
||||
cairo_stroke_preserve(cr);
|
||||
cairo_fill(cr);
|
||||
|
||||
cairo_show_page(cr);
|
||||
|
||||
cairo_surface_finish(surface);
|
||||
|
||||
loop = g_main_loop_new(NULL,FALSE);
|
||||
|
||||
gtk_print_job_send(print_job, print_end, NULL, NULL);
|
||||
|
||||
g_main_loop_run(loop);
|
||||
|
||||
cairo_destroy(cr);
|
||||
cairo_surface_destroy(surface);
|
||||
|
||||
g_main_loop_unref(loop);
|
||||
g_object_unref(settings);
|
||||
g_object_unref(page_setup);
|
||||
g_object_unref(printer);
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* recompress_files()
|
||||
*
|
||||
*/
|
||||
void recompress_files(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
|
||||
g_print("recompress files goes here\n");
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Recompress Files");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/*
|
||||
* --- OK button
|
||||
*/
|
||||
|
||||
/* --- Create the "OK" button --- */
|
||||
ok_button = gtk_button_new_with_label("OK");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the OK button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "OK" the default --- */
|
||||
gtk_widget_grab_default(ok_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(ok_button);
|
||||
|
||||
/*
|
||||
* --- Cancel button
|
||||
*/
|
||||
|
||||
/* --- Create the "Cancel" button --- */
|
||||
cancel_button = gtk_button_new_with_label("Cancel");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* rename_file()
|
||||
*
|
||||
*/
|
||||
void rename_file(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *currentNameLabel;
|
||||
GtkWidget *currentNameEntry;
|
||||
GtkWidget *newNameLabel;
|
||||
GtkWidget *newNameEntry;
|
||||
/*GtkWidget *hbox1;*/
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *help_button;
|
||||
|
||||
/*g_print("Rename file goes here.\n");*/
|
||||
|
||||
/*g_print("data=%s\n", (char *)data);*/
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Rename");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
/*hbox1 = gtk_hbox_new(FALSE, 0);
|
||||
gtk_widget_show(hbox1);*/
|
||||
|
||||
currentNameLabel = gtk_label_new("Current name: ");
|
||||
gtk_widget_show(currentNameLabel);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), currentNameLabel, TRUE, TRUE, 0);
|
||||
|
||||
currentNameEntry = gtk_entry_new();
|
||||
gtk_widget_show(currentNameEntry);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), currentNameEntry, TRUE, TRUE, 0);
|
||||
|
||||
newNameLabel = gtk_label_new("New name: ");
|
||||
gtk_widget_show(newNameLabel);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), newNameLabel, TRUE, TRUE, 0);
|
||||
|
||||
newNameEntry = gtk_entry_new();
|
||||
gtk_widget_show(newNameEntry);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), newNameEntry, TRUE, TRUE, 0);
|
||||
|
||||
/* FIXME -- need to add path separator widgets here */
|
||||
|
||||
/*
|
||||
* --- OK button
|
||||
*/
|
||||
|
||||
/* --- Create the "OK" button --- */
|
||||
ok_button = gtk_button_new_with_label("OK");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the OK button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "OK" the default --- */
|
||||
gtk_widget_grab_default(ok_button);
|
||||
|
||||
/* --- Make the button visible --- */
|
||||
gtk_widget_show(ok_button);
|
||||
|
||||
/*
|
||||
* --- Cancel button
|
||||
*/
|
||||
|
||||
/* --- Create the "Cancel" button --- */
|
||||
cancel_button = gtk_button_new_with_label("Cancel");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
||||
/*
|
||||
* --- Help button
|
||||
*/
|
||||
|
||||
/* --- Create the "Help" button --- */
|
||||
help_button = gtk_button_new_with_label("Help");
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_select_volume),
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* reopen_menu_item()
|
||||
*
|
||||
* Reopen from the menu.
|
||||
*
|
||||
*/
|
||||
void reopen_menu_item(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Reopen function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* save_changes()
|
||||
*
|
||||
* Save Changes from the menu.
|
||||
*
|
||||
*/
|
||||
void save_changes(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Save Changes function goes here.\n");
|
||||
}
|
||||
|
|
@ -12,6 +12,6 @@
|
|||
*/
|
||||
void save_to_file(char *filename)
|
||||
{
|
||||
g_print("Save to file goes here.\n");
|
||||
g_print("Save to file goes here.\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
/*
|
||||
*
|
||||
* select_all()
|
||||
*
|
||||
* Select All from the menu.
|
||||
*
|
||||
*/
|
||||
void select_all(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
/* --- Display message --- */
|
||||
g_print("Select All function goes here.\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* select_first_sst_image()
|
||||
*
|
||||
*/
|
||||
void select_first_sst_image(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
|
||||
g_print("Select first sst image goes here\n");
|
||||
|
||||
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Select first SST Image",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||
filename = gtk_file_chooser_get_filename(chooser);
|
||||
do_open_file(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* select_image_convert()
|
||||
*
|
||||
*/
|
||||
void select_image_convert(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
gint res;
|
||||
GtkFileFilter *diskImagesFilt;
|
||||
GtkFileFilter *allFilesFilt;
|
||||
|
||||
g_print("Select image convert goes here\n");
|
||||
|
||||
diskImagesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(diskImagesFilt, "Disk Images");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Hh][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ss][Dd][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Ss][Kk]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Pp][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd]13");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.2[Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Mm][Gg]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Ii][Bb]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Nn][Bb]2");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Rr][Aa][Ww]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Hh][Dd][Vv]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Cc]6");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Dd][Dd][Dd]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Aa][Pp][Pp]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ff][Dd][Ii]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Ii][Ss][Oo]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Gg][Zz]");
|
||||
gtk_file_filter_add_pattern(diskImagesFilt, "*.[Zz][Ii][Pp]");
|
||||
|
||||
allFilesFilt = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(allFilesFilt, "All Files");
|
||||
gtk_file_filter_add_pattern(allFilesFilt, "*");
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new("Select Image to convert",
|
||||
NULL,
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), diskImagesFilt);
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), allFilesFilt);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
if (res == GTK_RESPONSE_ACCEPT) {
|
||||
char *filename;
|
||||
GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog);
|
||||
filename = gtk_file_chooser_get_filename(chooser);
|
||||
do_open_file(filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
|
@ -17,9 +17,9 @@ enum {
|
|||
* Select volume dialog box
|
||||
*
|
||||
*/
|
||||
void select_volume()
|
||||
void select_volume(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
GtkWidget *dialog_window;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *ok_button;
|
||||
GtkWidget *cancel_button;
|
||||
GtkWidget *help_button;
|
||||
|
@ -32,21 +32,23 @@ void select_volume()
|
|||
GtkCellRenderer *renderer;
|
||||
GtkTreeModel *model;
|
||||
GtkWidget *view;
|
||||
GtkWidget *openAsReadOnlyCB;
|
||||
GtkWidget *openAsReadOnlyCb;
|
||||
|
||||
g_print("data=%s\n", (char *)data);
|
||||
|
||||
/* --- Create the dialog --- */
|
||||
dialog_window = gtk_dialog_new();
|
||||
dialog = gtk_dialog_new();
|
||||
|
||||
/* --- Trap the window close signal to release the grab --- */
|
||||
gtk_signal_connect(GTK_OBJECT(dialog_window), "destroy",
|
||||
gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
|
||||
GTK_SIGNAL_FUNC(closing_dialog),
|
||||
&dialog_window);
|
||||
&dialog);
|
||||
|
||||
/* --- Set the title --- */
|
||||
gtk_window_set_title(GTK_WINDOW(dialog_window), "Select Volume");
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Select Volume");
|
||||
|
||||
/* --- Add a small border --- */
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog_window), 5);
|
||||
gtk_container_border_width(GTK_CONTAINER(dialog), 5);
|
||||
|
||||
showHbox = gtk_hbox_new(FALSE, 0);
|
||||
|
||||
|
@ -78,7 +80,7 @@ void select_volume()
|
|||
gtk_box_pack_start(GTK_BOX(showHbox), showLabel, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(showHbox), showCombo, TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), showHbox, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), showHbox, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(showLabel);
|
||||
gtk_widget_show(showCombo);
|
||||
|
@ -96,6 +98,7 @@ void select_volume()
|
|||
-1);*/
|
||||
|
||||
view = gtk_tree_view_new();
|
||||
gtk_widget_set_size_request(view, 320, 256);
|
||||
|
||||
/* --- Column #1 --- */
|
||||
renderer = gtk_cell_renderer_text_new();
|
||||
|
@ -110,7 +113,7 @@ void select_volume()
|
|||
renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
|
||||
-1,
|
||||
"Remark",
|
||||
"Remarks",
|
||||
renderer,
|
||||
"text", COL_REMARK,
|
||||
NULL);
|
||||
|
@ -124,16 +127,16 @@ void select_volume()
|
|||
* be freed automatically when the tree view is destroyed */
|
||||
g_object_unref(model);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), view, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), view, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(view);
|
||||
|
||||
openAsReadOnlyCB = gtk_check_button_new_with_label("Open as read-only (writing to the volume will be disabled)");
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(openAsReadOnlyCB), TRUE);
|
||||
openAsReadOnlyCb = gtk_check_button_new_with_label("Open as read-only (writing to the volume will be disabled)");
|
||||
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(openAsReadOnlyCb), TRUE);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox), openAsReadOnlyCB, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), openAsReadOnlyCb, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_show(openAsReadOnlyCB);
|
||||
gtk_widget_show(openAsReadOnlyCb);
|
||||
|
||||
/*
|
||||
* --- OK button
|
||||
|
@ -144,13 +147,13 @@ void select_volume()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(ok_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(okfunc_select_volume),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the OK button to the bottom hbox2 --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), ok_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the "OK" the default --- */
|
||||
gtk_widget_grab_default(ok_button);
|
||||
|
@ -167,13 +170,13 @@ void select_volume()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(cancel_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(close_dialog),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Allow "Cancel" to be a default --- */
|
||||
GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT);
|
||||
|
||||
/* --- Add the "Cancel" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), cancel_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(cancel_button);
|
||||
|
@ -187,18 +190,18 @@ void select_volume()
|
|||
|
||||
gtk_signal_connect(GTK_OBJECT(help_button), "clicked",
|
||||
GTK_SIGNAL_FUNC(help_func_select_volume),
|
||||
dialog_window);
|
||||
dialog);
|
||||
|
||||
/* --- Add the "Help" button to the dialog --- */
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area), help_button, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area), help_button, TRUE, TRUE, 0);
|
||||
|
||||
/* --- Make the button visible. --- */
|
||||
gtk_widget_show(help_button);
|
||||
|
||||
/* --- Show the dialog --- */
|
||||
gtk_widget_show(dialog_window);
|
||||
gtk_widget_show(dialog);
|
||||
|
||||
/* --- Only this window can be used for now --- */
|
||||
gtk_grab_add(dialog_window);
|
||||
gtk_grab_add(dialog);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ void show_about(GtkWidget *widget, gpointer data)
|
|||
|
||||
GtkWidget *dialog = gtk_about_dialog_new();
|
||||
gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), "Calvados");
|
||||
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), "0.1");
|
||||
gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog),"(c) Leeland Heins");
|
||||
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), "0.2");
|
||||
gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog),"(c) 2017 Leeland Heins");
|
||||
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog),
|
||||
"Calvados is intended to be a work-alike of CiderPress for Linux.");
|
||||
gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(dialog),
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#include "calvados.h"
|
||||
|
||||
/*
|
||||
*
|
||||
* show_error()
|
||||
*
|
||||
* Show an error message dialog box
|
||||
*
|
||||
*/
|
||||
void show_error(GtkWidget *widget, gpointer data, char *message)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
/*g_print("Error dialog goes here\n");*/
|
||||
|
||||
dialog = gtk_message_dialog_new(NULL,
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_OK,
|
||||
message);
|
||||
|
||||
gtk_window_set_title(GTK_WINDOW(dialog), "Error");
|
||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||
gtk_widget_destroy(dialog);
|
||||
}
|
||||
|
Loading…
Reference in New Issue