/*
 * Initial main.c file generated by Glade. Edit as required.
 * Glade will not overwrite this file.
 */

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gtk/gtk.h>

#include "hoz.h"
#include "hozgtk.h"
#include "hozgtk_i.h"
#include "hozgtk_s.h"


GtkWidget *window_hoz;
GtkWidget *window_bs;           /* badsize */
GtkWidget *window_ra;           /* replaceask */
GtkWidget *window_fd;           /* file dialog */
GtkTextView *rprttextview;
GtkTextBuffer *rprtbuf;
char hozfile[MAXLEN + 1];
int hozaction;                  /* 0=debug, 1=cut, 2=paste */

extern char outpath[MAXLEN];
extern size_t fullsize, partsize, headersize;
extern int showprogress, forceow, simulate;


void hoz_print(const char *str)
{
    GtkTextIter iter;
    GtkTextMark *mark;
    gtk_text_buffer_get_end_iter(rprtbuf, &iter);
    gtk_text_buffer_insert(rprtbuf, &iter, str, -1);
/*    gtk_text_buffer_insert_with_tags_by_name (rprtbuf, &iter,
					    str, -1,
					    "char_wrap", NULL);
    */
    mark = gtk_text_buffer_get_insert(rprtbuf);
    gtk_text_view_scroll_to_mark(rprttextview, mark, 0, FALSE, 0, 0);

}

void hoz_lf()
{
    hoz_print("\n");
}

/**
 * hoz_replace_ask - ask the user if an output file should be replaced
 * @s: filename
 */
int hoz_replace_ask(const char *s)
{
    char foo[1024];

    sprintf(foo, HOZ_REPLACE_W, s);
    window_ra = create_dialog_ra();
    gtk_window_set_title(GTK_WINDOW(window_ra), HOZ_PROGRAM);
    gtk_label_set_label(GTK_LABEL
                        (lookup_widget
                         (GTK_WIDGET(window_ra), "label_msg_ra")), foo);
    gtk_button_set_label(GTK_BUTTON
                         (lookup_widget
                          (GTK_WIDGET(window_ra), "button_yes_ra")), "Ok");
    gtk_button_set_label(GTK_BUTTON
                         (lookup_widget
                          (GTK_WIDGET(window_ra), "button_no_ra")),
                         "Cancel");
    gtk_widget_show(window_ra);
    /* this is an ugly hack... damn gtk "modal" dialogs */
    return 0;
}

/**
 * hoz_ready - useless...
 */
void hoz_ready()
{
    hoz_lf();
    hoz_print(HOZ_READY);
    hoz_lf();
}

/**
 * hoz_getsize - Gets the size in bytes from the size editbox
 */
size_t hoz_getsize()
{
    gchar baz[101];
    const gchar *foo, *qux;
    size_t bar, mult;

    foo =
        gtk_entry_get_text(GTK_ENTRY
                           (lookup_widget
                            (GTK_WIDGET(window_hoz), "entry_size")));
    qux = gtk_entry_get_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(window_hoz),\
		    "combo_entry_size")));
    if (!strcmp(qux, "MiB")) {
	mult = 1024*1024;
    } else if (!strcmp(qux, "KiB")) {
	mult = 1024;
    } else {
	mult = 1;
    }
    bar = (size_t) atolmp((char *) foo, mult);
    partsize = (bar) ? bar : 0;
    if (!partsize && strlen(foo)) {
        sprintf(baz, HOZ_BADSIZE, foo);
        if (!window_bs) {
            window_bs = create_dialog_bs();
        }
        gtk_window_set_title(GTK_WINDOW(window_bs), HOZ_PROGRAM);
        gtk_label_set_label(GTK_LABEL
                            (lookup_widget
                             (GTK_WIDGET(window_bs), "label_msg_bs")),
                            baz);
        gtk_button_set_label(GTK_BUTTON
                             (lookup_widget
                              (GTK_WIDGET(window_bs), "okbutton_bs")),
                             "Ok");
        gtk_widget_show(window_bs);
    }
    return partsize;
}

/**
 * hoz_getoutpdir - Gets the output path from the entrybox
 */
int hoz_getoutpdir()
{
    strcpy(outpath,
           gtk_entry_get_text(GTK_ENTRY
                              (lookup_widget
                               (GTK_WIDGET(window_hoz), "entry_outp"))));
    if (!isdir(outpath)) {
        hoz_echo(411, outpath);
        return 411;
    }
    return 0;
}

/**
 * hoz_fileop - pops up an open/save file dialog
 * @cutpaste: 0=cut, 1=paste
 */
int hoz_fileop(const int cutpaste)
{
    window_fd = create_fileselection_fd();
    {
        char foo[60];
        sprintf(foo, "%s - %s", HOZ_PROGRAM,
                ((cutpaste) ? (HOZ_BTNPASTECAPTION)
                 : (HOZ_BTNCUTCAPTION)));
        gtk_window_set_title(GTK_WINDOW(window_fd), foo);
    }
    gtk_widget_show(window_fd);
    return 0;
}

int main(int argc, char *argv[])
{

    gtk_set_locale();
    gtk_init(&argc, &argv);

    getcwd(outpath, MAXLEN);

    window_hoz = create_window_hoz();
    window_bs = NULL;
    window_fd = NULL;
    window_ra = NULL;
    hozaction = 0;


    rprttextview =
        GTK_TEXT_VIEW(lookup_widget
                      (GTK_WIDGET(window_hoz), "textview_rprt"));
    rprtbuf = gtk_text_view_get_buffer(rprttextview);
    /*
       gtk_text_buffer_create_tag (rprtbuf, "char_wrap", "wrap_mode", GTK_WRAP_CHAR, NULL);
     */

    gtk_entry_set_text(GTK_ENTRY
                       (lookup_widget
                        (GTK_WIDGET(window_hoz), "entry_size")),
                       "1457152");
    gtk_entry_set_text(GTK_ENTRY
                       (lookup_widget
                        (GTK_WIDGET(window_hoz), "entry_outp")), outpath);
    gtk_label_set_label(GTK_LABEL
                        (lookup_widget
                         (GTK_WIDGET(window_hoz), "label_outp")),
                        HOZ_OUTPCAPTION);
    gtk_label_set_label(GTK_LABEL
                        (lookup_widget
                         (GTK_WIDGET(window_hoz), "label_size")),
                        HOZ_PSIZECAPTION);
    gtk_button_set_label(GTK_BUTTON
                         (lookup_widget
                          (GTK_WIDGET(window_hoz), "checkbutton_prgr")),
                         HOZ_CBPRGRCAPTION);
    gtk_button_set_label(GTK_BUTTON
                         (lookup_widget
                          (GTK_WIDGET(window_hoz), "button_cut")),
                         HOZ_BTNCUTCAPTION);
    gtk_button_set_label(GTK_BUTTON
                         (lookup_widget
                          (GTK_WIDGET(window_hoz), "button_paste")),
                         HOZ_BTNPASTECAPTION);

    {
        char foo[60];
        sprintf(foo, "%s - Hacha Open Zource", HOZ_PROGNAME);
        gtk_window_set_title(GTK_WINDOW(window_hoz), foo);
    }
    hoz_echo(301, NULL);
    hoz_ready();
    fullsize = 0;

    gtk_widget_show(window_hoz);

    gtk_main();
    return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1