[PATCH] Toolbar zoom control button

<[email protected]>
Newsgroups gmane.comp.web.dillo.devel
Message-ID <[email protected]>
Hi list, 

Here is an improved version of my previous patch. 

The icon is fixed, it's basic but does the job. If someone wants to
make a prettier one, I'm open to it. 

Other improvements as discussed with Rodrigo:

- Middle click resets zoom level 
- There is now a 'show_zoom' preference in dillorc (enabled by default)
- The save button has been disabled by default
- The zoom button has been moved to the right of the refresh button

Please let me know if you find any issues, and hope you enjoy it :)

Regards, 
Alex


diff -upr a/dillorc b/dillorc
--- a/dillorc	Sun Jul 14 18:25:44 2024
+++ b/dillorc	Sun Jul 14 18:25:59 2024
@@ -366,7 +366,8 @@ ui_tab_bg_color=#b7beb7
 #show_forw=YES
 #show_home=YES
 #show_reload=YES
-#show_save=YES
+#show_zoom=YES
+#show_save=NO
 #show_stop=YES
 #show_bookmarks=YES
 #show_tools=YES
diff -upr a/src/pixmaps.h b/src/pixmaps.h
--- a/src/pixmaps.h	Sun Jul 14 18:25:44 2024
+++ b/src/pixmaps.h	Sun Jul 14 18:25:59 2024
@@ -809,6 +809,35 @@ static const char *const tools_xpm[] = {
 "              -&X6&=# ",
 "                      "};
 
+/* XPM */
+static const char *const zoom_xpm[] = {
+"22 22 3 1",
+" 	c None",
+"1	c #B3B3B3",
+"2	c #000000",
+"        111111        ",
+"      1122222211      ",
+"     122      221     ",
+"    12          21    ",
+"   12            21   ",
+"  12      11      21  ",
+" 12      1221      21 ",
+" 12      1221      21 ",
+"12       1221       21",
+"12    1111221111    21",
+"12   122222222221   21",
+"12   122222222221   21",
+"12    1111221111    21",
+"12       1221       21",
+" 12      1221      21 ",
+" 12      1221      21 ",
+"  12      11      21  ",
+"   12            21   ",
+"    12          2221  ",
+"     122      2211221 ",
+"      1122222211  1221",
+"        111111     122"};
+
 /* Small icons here */
 
 /* XPM */
@@ -1408,6 +1437,29 @@ static const char *const tools_s_xpm[] = {
 "         u-%#*%0",
 "          feww0g"
 };
+
+/* XPM */
+static const char *const zoom_s_xpm[] = {
+"16 16 3 1",
+" 	c None",
+"1	c #000000",
+"2	c #B3B3B3",
+"     222222     ",
+"    21111112    ",
+"   21      12   ",
+"  21   22   12  ",
+" 21   2112   12 ",
+"21    2112    12",
+"21  22211222  12",
+"21 2111111112 12",
+"21 2111111112 12",
+"21  22211222  12",
+" 21   2112   12 ",
+"  21  2112  122 ",
+"   21  22  11112",
+"    211111122111",
+"     222222  211",
+"              22"};
 
 /* XPM */
 static const char *const new_s_xpm[] = {
diff -upr a/src/prefs.c b/src/prefs.c
--- a/src/prefs.c	Sun Jul 14 18:25:44 2024
+++ b/src/prefs.c	Sun Jul 14 18:25:59 2024
@@ -103,7 +103,8 @@ void a_Prefs_init(void)
    prefs.show_progress_box = TRUE;
    prefs.show_quit_dialog = TRUE;
    prefs.show_reload = TRUE;
-   prefs.show_save = TRUE;
+   prefs.show_zoom = TRUE;
+   prefs.show_save = FALSE;
    prefs.show_url = TRUE;
    prefs.show_search = TRUE;
    prefs.show_stop = TRUE;
diff -upr a/src/prefs.h b/src/prefs.h
--- a/src/prefs.h	Sun Jul 14 18:25:44 2024
+++ b/src/prefs.h	Sun Jul 14 18:25:59 2024
@@ -81,6 +81,7 @@ typedef struct {
    bool_t show_forw;
    bool_t show_home;
    bool_t show_reload;
+   bool_t show_zoom;
    bool_t show_save;
    bool_t show_stop;
    bool_t show_bookmarks;
diff -upr a/src/prefsparser.cc b/src/prefsparser.cc
--- a/src/prefsparser.cc	Sun Jul 14 18:25:44 2024
+++ b/src/prefsparser.cc	Sun Jul 14 18:25:59 2024
@@ -213,6 +213,7 @@ void PrefsParser::parse(FILE *fp)
       { "show_progress_box", &prefs.show_progress_box, PREFS_BOOL, 0 },
       { "show_quit_dialog", &prefs.show_quit_dialog, PREFS_BOOL, 0 },
       { "show_reload", &prefs.show_reload, PREFS_BOOL, 0 },
+      { "show_zoom", &prefs.show_zoom, PREFS_BOOL, 0 },
       { "show_save", &prefs.show_save, PREFS_BOOL, 0 },
       { "show_url", &prefs.show_url, PREFS_BOOL, 0 },
       { "show_search", &prefs.show_search, PREFS_BOOL, 0 },
diff -upr a/src/ui.cc b/src/ui.cc
--- a/src/ui.cc	Sun Jul 14 18:25:44 2024
+++ b/src/ui.cc	Sun Jul 14 18:25:59 2024
@@ -38,7 +38,7 @@
 
 struct iconset {
    Fl_Image *ImgMeterOK, *ImgMeterBug,
-            *ImgHome, *ImgReload, *ImgSave, *ImgBook, *ImgTools,
+            *ImgHome, *ImgReload, *ImgZoom, *ImgSave, *ImgBook, *ImgTools, 
             *ImgClear,*ImgSearch, *ImgHelp, *ImgLeft, *ImgLeftIn,
             *ImgRight, *ImgRightIn, *ImgStop, *ImgStopIn;
 };
@@ -48,6 +48,7 @@ static struct iconset standard_icons = {
    new Fl_Pixmap(mini_bug_xpm),
    new Fl_Pixmap(home_xpm),
    new Fl_Pixmap(reload_xpm),
+   new Fl_Pixmap(zoom_xpm),
    new Fl_Pixmap(save_xpm),
    new Fl_Pixmap(bm_xpm),
    new Fl_Pixmap(tools_xpm),
@@ -67,6 +68,7 @@ static struct iconset small_icons = {
    standard_icons.ImgMeterBug,
    new Fl_Pixmap(home_s_xpm),
    new Fl_Pixmap(reload_s_xpm),
+   new Fl_Pixmap(zoom_s_xpm),
    new Fl_Pixmap(save_s_xpm),
    new Fl_Pixmap(bm_s_xpm),
    new Fl_Pixmap(tools_s_xpm),
@@ -356,6 +358,15 @@ static void b1_cb(Fl_Widget *wid, void *cb_data)
                        wid->y() + wid->h());
       }
       break;
+   case UI_ZOOM:
+      if (b == FL_LEFT_MOUSE) {
+         a_UIcmd_zoom_in(a_UIcmd_get_bw_by_widget(wid));
+      } else if (b == FL_RIGHT_MOUSE) {
+         a_UIcmd_zoom_out(a_UIcmd_get_bw_by_widget(wid));
+      } else if (b == FL_MIDDLE_MOUSE) {
+         a_UIcmd_zoom_reset(a_UIcmd_get_bw_by_widget(wid));
+      } 
+      break;      
    default:
       break;
    }
@@ -429,6 +440,7 @@ void UI::make_toolbar(int tw, int th)
    Forw = make_button("Forw", icons->ImgRight, icons->ImgRightIn, UI_FORW);
    Home = make_button("Home", icons->ImgHome, NULL, UI_HOME);
    Reload = make_button("Reload", icons->ImgReload, NULL, UI_RELOAD);
+   Zoom = make_button("Zoom", icons->ImgZoom, NULL, UI_ZOOM);
    Save = make_button("Save", icons->ImgSave, NULL, UI_SAVE);
    Stop = make_button("Stop", icons->ImgStop, icons->ImgStopIn, UI_STOP);
    Bookmarks = make_button("Book", icons->ImgBook, NULL, UI_BOOK);
@@ -438,6 +450,7 @@ void UI::make_toolbar(int tw, int th)
    Forw->set_tooltip("Next page");
    Home->set_tooltip("Go to the Home page");
    Reload->set_tooltip("Reload");
+   Zoom->set_tooltip("Zoom: left-click, Zoom out: right-click, Reset: middle");
    Save->set_tooltip("Save this page");
    Stop->set_tooltip("Stop loading");
    Bookmarks->set_tooltip("View bookmarks");
@@ -952,6 +965,8 @@ void UI::customize()
       Home->hide();
    if ( !prefs.show_reload )
       Reload->hide();
+   if ( !prefs.show_zoom )
+      Zoom->hide();
    if ( !prefs.show_save )
       Save->hide();
    if ( !prefs.show_stop )
diff -upr a/src/ui.hh b/src/ui.hh
--- a/src/ui.hh	Sun Jul 14 18:25:44 2024
+++ b/src/ui.hh	Sun Jul 14 18:25:59 2024
@@ -19,6 +19,7 @@ typedef enum {
    UI_FORW,
    UI_HOME,
    UI_RELOAD,
+   UI_ZOOM,
    UI_SAVE,
    UI_STOP,
    UI_BOOK,
@@ -124,7 +125,7 @@ class UI : public CustGroupVertical {
    CustTabs *Tabs;
 
    CustGroupVertical *TopGroup;
-   CustButton *Back, *Forw, *Home, *Reload, *Save, *Stop, *Bookmarks,
+   CustButton *Back, *Forw, *Home, *Reload, *Zoom, *Save, *Stop, *Bookmarks,
               *Tools, *Clear, *Search, *Help, *BugMeter, *FileButton;
    CustGroupHorizontal *LocBar, *NavBar, *StatusBar;
    Fl_Input *Location;

_______________________________________________
Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected]
To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected]
new-zoom-button.patch (text/x-patch, 6.5 KB)
diff -upr a/dillorc b/dillorc
--- a/dillorc	Sun Jul 14 18:25:44 2024
+++ b/dillorc	Sun Jul 14 18:25:59 2024
@@ -366,7 +366,8 @@ ui_tab_bg_color=#b7beb7
 #show_forw=YES
 #show_home=YES
 #show_reload=YES
-#show_save=YES
+#show_zoom=YES
+#show_save=NO
 #show_stop=YES
 #show_bookmarks=YES
 #show_tools=YES
diff -upr a/src/pixmaps.h b/src/pixmaps.h
--- a/src/pixmaps.h	Sun Jul 14 18:25:44 2024
+++ b/src/pixmaps.h	Sun Jul 14 18:25:59 2024
@@ -809,6 +809,35 @@ static const char *const tools_xpm[] = {
 "              -&X6&=# ",
 "                      "};
 
+/* XPM */
+static const char *const zoom_xpm[] = {
+"22 22 3 1",
+" 	c None",
+"1	c #B3B3B3",
+"2	c #000000",
+"        111111        ",
+"      1122222211      ",
+"     122      221     ",
+"    12          21    ",
+"   12            21   ",
+"  12      11      21  ",
+" 12      1221      21 ",
+" 12      1221      21 ",
+"12       1221       21",
+"12    1111221111    21",
+"12   122222222221   21",
+"12   122222222221   21",
+"12    1111221111    21",
+"12       1221       21",
+" 12      1221      21 ",
+" 12      1221      21 ",
+"  12      11      21  ",
+"   12            21   ",
+"    12          2221  ",
+"     122      2211221 ",
+"      1122222211  1221",
+"        111111     122"};
+
 /* Small icons here */
 
 /* XPM */
@@ -1408,6 +1437,29 @@ static const char *const tools_s_xpm[] = {
 "         u-%#*%0",
 "          feww0g"
 };
+
+/* XPM */
+static const char *const zoom_s_xpm[] = {
+"16 16 3 1",
+" 	c None",
+"1	c #000000",
+"2	c #B3B3B3",
+"     222222     ",
+"    21111112    ",
+"   21      12   ",
+"  21   22   12  ",
+" 21   2112   12 ",
+"21    2112    12",
+"21  22211222  12",
+"21 2111111112 12",
+"21 2111111112 12",
+"21  22211222  12",
+" 21   2112   12 ",
+"  21  2112  122 ",
+"   21  22  11112",
+"    211111122111",
+"     222222  211",
+"              22"};
 
 /* XPM */
 static const char *const new_s_xpm[] = {
diff -upr a/src/prefs.c b/src/prefs.c
--- a/src/prefs.c	Sun Jul 14 18:25:44 2024
+++ b/src/prefs.c	Sun Jul 14 18:25:59 2024
@@ -103,7 +103,8 @@ void a_Prefs_init(void)
    prefs.show_progress_box = TRUE;
    prefs.show_quit_dialog = TRUE;
    prefs.show_reload = TRUE;
-   prefs.show_save = TRUE;
+   prefs.show_zoom = TRUE;
+   prefs.show_save = FALSE;
    prefs.show_url = TRUE;
    prefs.show_search = TRUE;
    prefs.show_stop = TRUE;
diff -upr a/src/prefs.h b/src/prefs.h
--- a/src/prefs.h	Sun Jul 14 18:25:44 2024
+++ b/src/prefs.h	Sun Jul 14 18:25:59 2024
@@ -81,6 +81,7 @@ typedef struct {
    bool_t show_forw;
    bool_t show_home;
    bool_t show_reload;
+   bool_t show_zoom;
    bool_t show_save;
    bool_t show_stop;
    bool_t show_bookmarks;
diff -upr a/src/prefsparser.cc b/src/prefsparser.cc
--- a/src/prefsparser.cc	Sun Jul 14 18:25:44 2024
+++ b/src/prefsparser.cc	Sun Jul 14 18:25:59 2024
@@ -213,6 +213,7 @@ void PrefsParser::parse(FILE *fp)
       { "show_progress_box", &prefs.show_progress_box, PREFS_BOOL, 0 },
       { "show_quit_dialog", &prefs.show_quit_dialog, PREFS_BOOL, 0 },
       { "show_reload", &prefs.show_reload, PREFS_BOOL, 0 },
+      { "show_zoom", &prefs.show_zoom, PREFS_BOOL, 0 },
       { "show_save", &prefs.show_save, PREFS_BOOL, 0 },
       { "show_url", &prefs.show_url, PREFS_BOOL, 0 },
       { "show_search", &prefs.show_search, PREFS_BOOL, 0 },
diff -upr a/src/ui.cc b/src/ui.cc
--- a/src/ui.cc	Sun Jul 14 18:25:44 2024
+++ b/src/ui.cc	Sun Jul 14 18:25:59 2024
@@ -38,7 +38,7 @@
 
 struct iconset {
    Fl_Image *ImgMeterOK, *ImgMeterBug,
-            *ImgHome, *ImgReload, *ImgSave, *ImgBook, *ImgTools,
+            *ImgHome, *ImgReload, *ImgZoom, *ImgSave, *ImgBook, *ImgTools, 
             *ImgClear,*ImgSearch, *ImgHelp, *ImgLeft, *ImgLeftIn,
             *ImgRight, *ImgRightIn, *ImgStop, *ImgStopIn;
 };
@@ -48,6 +48,7 @@ static struct iconset standard_icons = {
    new Fl_Pixmap(mini_bug_xpm),
    new Fl_Pixmap(home_xpm),
    new Fl_Pixmap(reload_xpm),
+   new Fl_Pixmap(zoom_xpm),
    new Fl_Pixmap(save_xpm),
    new Fl_Pixmap(bm_xpm),
    new Fl_Pixmap(tools_xpm),
@@ -67,6 +68,7 @@ static struct iconset small_icons = {
    standard_icons.ImgMeterBug,
    new Fl_Pixmap(home_s_xpm),
    new Fl_Pixmap(reload_s_xpm),
+   new Fl_Pixmap(zoom_s_xpm),
    new Fl_Pixmap(save_s_xpm),
    new Fl_Pixmap(bm_s_xpm),
    new Fl_Pixmap(tools_s_xpm),
@@ -356,6 +358,15 @@ static void b1_cb(Fl_Widget *wid, void *cb_data)
                        wid->y() + wid->h());
       }
       break;
+   case UI_ZOOM:
+      if (b == FL_LEFT_MOUSE) {
+         a_UIcmd_zoom_in(a_UIcmd_get_bw_by_widget(wid));
+      } else if (b == FL_RIGHT_MOUSE) {
+         a_UIcmd_zoom_out(a_UIcmd_get_bw_by_widget(wid));
+      } else if (b == FL_MIDDLE_MOUSE) {
+         a_UIcmd_zoom_reset(a_UIcmd_get_bw_by_widget(wid));
+      } 
+      break;      
    default:
       break;
    }
@@ -429,6 +440,7 @@ void UI::make_toolbar(int tw, int th)
    Forw = make_button("Forw", icons->ImgRight, icons->ImgRightIn, UI_FORW);
    Home = make_button("Home", icons->ImgHome, NULL, UI_HOME);
    Reload = make_button("Reload", icons->ImgReload, NULL, UI_RELOAD);
+   Zoom = make_button("Zoom", icons->ImgZoom, NULL, UI_ZOOM);
    Save = make_button("Save", icons->ImgSave, NULL, UI_SAVE);
    Stop = make_button("Stop", icons->ImgStop, icons->ImgStopIn, UI_STOP);
    Bookmarks = make_button("Book", icons->ImgBook, NULL, UI_BOOK);
@@ -438,6 +450,7 @@ void UI::make_toolbar(int tw, int th)
    Forw->set_tooltip("Next page");
    Home->set_tooltip("Go to the Home page");
    Reload->set_tooltip("Reload");
+   Zoom->set_tooltip("Zoom: left-click, Zoom out: right-click, Reset: middle");
    Save->set_tooltip("Save this page");
    Stop->set_tooltip("Stop loading");
    Bookmarks->set_tooltip("View bookmarks");
@@ -952,6 +965,8 @@ void UI::customize()
       Home->hide();
    if ( !prefs.show_reload )
       Reload->hide();
+   if ( !prefs.show_zoom )
+      Zoom->hide();
    if ( !prefs.show_save )
       Save->hide();
    if ( !prefs.show_stop )
diff -upr a/src/ui.hh b/src/ui.hh
--- a/src/ui.hh	Sun Jul 14 18:25:44 2024
+++ b/src/ui.hh	Sun Jul 14 18:25:59 2024
@@ -19,6 +19,7 @@ typedef enum {
    UI_FORW,
    UI_HOME,
    UI_RELOAD,
+   UI_ZOOM,
    UI_SAVE,
    UI_STOP,
    UI_BOOK,
@@ -124,7 +125,7 @@ class UI : public CustGroupVertical {
    CustTabs *Tabs;
 
    CustGroupVertical *TopGroup;
-   CustButton *Back, *Forw, *Home, *Reload, *Save, *Stop, *Bookmarks,
+   CustButton *Back, *Forw, *Home, *Reload, *Zoom, *Save, *Stop, *Bookmarks,
               *Tools, *Clear, *Search, *Help, *BugMeter, *FileButton;
    CustGroupHorizontal *LocBar, *NavBar, *StatusBar;
    Fl_Input *Location;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.