diff options
Diffstat (limited to 'src/flpsed.cxx')
| -rw-r--r-- | src/flpsed.cxx | 40 | 
1 files changed, 38 insertions, 2 deletions
diff --git a/src/flpsed.cxx b/src/flpsed.cxx index deb2579..391134c 100644 --- a/src/flpsed.cxx +++ b/src/flpsed.cxx @@ -40,6 +40,7 @@  #include <FL/Fl_Menu_Bar.H>  #include <FL/Fl_Menu_Item.H>  #include <FL/Fl_Color_Chooser.H> +#include <FL/Fl_Hold_Browser.H>  #include "PSEditor.H"  #include "util.h" @@ -47,6 +48,7 @@  PSEditor *psed_p   = NULL;  Fl_Scroll *scroll = NULL; +Fl_Hold_Browser *page_sel = NULL;  int xev_handler(int ev) {    if (psed_p) { @@ -76,6 +78,31 @@ int check_save(void) {  char filename[256] = ""; + +void page_sel_cb(Fl_Widget *w, void *) { +  int p = page_sel->value() - 1; +  if (p >= 0) { +    psed_p->load_page(page_sel->value() - 1); +  } +} + +void page_sel_fill() { +  char buf[64]; +  int p = psed_p->get_pages(); + +  page_sel->clear(); + +  if (p == 0) { +    return; +  } + +  for(int i=1; i<=p; i++) { +    snprintf(buf, sizeof(buf), "%d", i); +    page_sel->add(buf); +  } +  page_sel->select(psed_p->get_page() + 1); +} +  void open_cb() {    if (!check_save()) return;    char *file = fl_file_chooser("Open File?", "*.ps", filename); @@ -83,9 +110,11 @@ void open_cb() {      psed_p->open_file(file);      psed_p->load(); +    page_sel_fill();    }    } +  void import_pdf_cb() {    char *file;    FILE *p; @@ -105,6 +134,8 @@ void import_pdf_cb() {      if (p) {        psed_p->open_file(p); +      psed_p->load(); +      page_sel_fill();        fclose(p);        waitpid(pid, &status, 0);         if (WEXITSTATUS(status) == 127 || WEXITSTATUS(status) == 126) { @@ -165,10 +196,12 @@ void import_cb() {  void first_cb() {    psed_p->load(); +  page_sel->select(psed_p->get_page() + 1);  }  void next_cb() {    psed_p->next(); +  page_sel->select(psed_p->get_page() + 1);  }  void quit_cb() { @@ -512,8 +545,10 @@ int main(int argc, char** argv) {      color_b->shortcut(FL_ALT + 'c');      color_b->tooltip("Text Color");      props.end(); - -    scroll = new Fl_Scroll(0, 55, win->w(), win->h()-55); +    page_sel = new Fl_Hold_Browser(0, 55, 40, win->h()-55); +    page_sel->callback(page_sel_cb); +    page_sel->end(); +    scroll = new Fl_Scroll(40, 55, win->w()-40, win->h()-55);      psed_p = new PSEditor(0, 0, 700, 900);      psed_p->property_changed_callback(property_changed_cb);      scroll->end(); @@ -530,6 +565,7 @@ int main(int argc, char** argv) {      if (in_fp) {        psed_p->open_file(in_fp);        psed_p->load(); +      page_sel_fill();        fclose(in_fp);      }  | 
