antiright-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Antiright-devel] antiright/xshell arguments.c button.c layout.h ...


From: Jeffrey Bedard
Subject: [Antiright-devel] antiright/xshell arguments.c button.c layout.h ...
Date: Sat, 01 Sep 2007 18:13:07 +0000

CVSROOT:        /sources/antiright
Module name:    antiright
Changes by:     Jeffrey Bedard <jefbed> 07/09/01 18:13:07

Modified files:
        xshell         : arguments.c button.c layout.h xshell.c 

Log message:
        Use layout comprising of a compromise between fixed dimensions and
        font-based spacing.  

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/antiright/xshell/arguments.c?cvsroot=antiright&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/antiright/xshell/button.c?cvsroot=antiright&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/antiright/xshell/layout.h?cvsroot=antiright&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/antiright/xshell/xshell.c?cvsroot=antiright&r1=1.7&r2=1.8

Patches:
Index: arguments.c
===================================================================
RCS file: /sources/antiright/antiright/xshell/arguments.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- arguments.c 28 Aug 2007 19:39:12 -0000      1.10
+++ arguments.c 1 Sep 2007 18:13:07 -0000       1.11
@@ -32,6 +32,13 @@
 }
 
 static void
+add_label(XShell * xsh, const char * label_text)
+{
+       xshell_button_new(xsh, xsh->gui.widgets, label_text);
+       xsh->gui.last_widget->events.button_press=NULL;
+}
+
+static void
 handle_add_options(XShell * xsh, int argc, char ** argv,
        unsigned int * counter)
 {
@@ -42,8 +49,7 @@
        {
        case 'l': /* Label.  */
                (*counter)++;
-               xshell_button_new(xsh, xsh->gui.widgets, argv[*counter]);
-               xsh->gui.last_widget->events.button_press=NULL;
+               add_label(xsh, argv[(*counter)]);
                break;
 
        case 'r': /* Add a column.  */
@@ -79,19 +85,23 @@
 }
 
 static void
+set_geometry(XShell * xsh, const char * geometry_string)
+{
+       XWindowAttributes *geometry
+               = &(xsh->gui.widgets->geometry);
+       XParseGeometry(geometry_string, 
+               &(geometry->x), &(geometry->y), 
+               &(geometry->width), &(geometry->height)); 
+}
+
+static void
 handle_option_options(XShell * xsh, int argc, char ** argv,
        unsigned int * counter)
 {
        switch(argv[*counter][2])
        {
                case 'g':
-               {
-                       XWindowAttributes *geometry
-                               = &(xsh->gui.widgets->geometry);
-                       XParseGeometry(argv[++(*counter)], 
-                               &(geometry->x), &(geometry->y), 
-                               &(geometry->width), &(geometry->height)); 
-               }
+                       set_geometry(xsh, argv[++(*counter)]);
                        break;
                case 'n':
                        set_override_redirect(xsh);

Index: button.c
===================================================================
RCS file: /sources/antiright/antiright/xshell/button.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- button.c    28 Aug 2007 19:39:12 -0000      1.8
+++ button.c    1 Sep 2007 18:13:07 -0000       1.9
@@ -25,18 +25,28 @@
 static void
 draw_label(XShell * xsh, XWidget * button)
 {
-       XSHButtonData * data;
-       char * label;
+       XSHButtonData * data = (XSHButtonData *)button->data;
+       char * label=data->label;
        XShellGUI * gui = &(xsh->gui);
        Display * dpy = gui->display;
        GC gc = xsh->gui.gc;
+       const unsigned int label_length = strlen(label);
+       const unsigned int font_width = XSH_FONT_WIDTH(xsh);
+       const unsigned int font_height = XSH_FONT_HEIGHT(xsh);
 
-       data=(XSHButtonData *)button->data;
-       label=data->label;
        XSH_SET_COLOR(dpy, gc, 0, 0, 0);
        XDrawString(xsh->gui.display, button->window, xsh->gui.gc,
-               5, 12, label, strlen(label));
+               font_width, font_height-XSH_WIDGET_PADDING, 
+               label, label_length);
 #if 0
+       {
+               XWindowAttributes * geometry = &(button->geometry);
+
+               XMoveResizeWindow(xsh->gui.display, button->window, 
+                       geometry->x, geometry->y,
+                       font_width*label_length, 
font_height+XSH_WIDGET_PADDING*2);
+       }
+       
 {
                        unsigned int width, height;
                        GC gc = xsh->gui.gc;
@@ -97,6 +107,16 @@
        button->events.button_press=&button_press;\
        button->events.button_release=&button_release;
 
+static char *
+setup_label(const char * command)
+{
+       char * label;
+
+       label=strchr(command, '#')?label+1:(char*)command;
+
+       return label;
+}
+
 void
 xshell_floating_button_new(XShell * xsh, XWidget * parent, 
        const char * command, int x, int y, 
@@ -106,12 +126,11 @@
        XSHButtonData * data;
        char * label;
 
+       xshell_XWidget_new(xsh, parent, x, y, width, height);
        button=xsh->gui.last_widget;
        button->data=data=malloc(sizeof(XSHButtonData));
-       data->command=(char *)command;
-       data->label=(label=strchr(command, '#'))?label+1:(char*)command;
+       data->label=setup_label(data->command=(char *)command);
        SETUP_BUTTON_EVENTS(button);
-       xshell_XWidget_new(xsh, parent, x, y, width, height);
 }
 
 void
@@ -123,11 +142,14 @@
                XSH_WIDGET_WIDTH*(layout->column_count), 
                XSH_WIDGET_HEIGHT*((layout->row_count = 
                layout->row_count < layout->max_row_count
-               ? layout->row_count+1:0)-1), 
+               ? layout->row_count+1:0)), 
                XSH_WIDGET_WIDTH, XSH_WIDGET_HEIGHT);
+/*#ifdef DEBUG */
+       printf("layout->row_count: %d\nlayout->max_row_count: %d\n",
+               layout->row_count, layout->max_row_count);
+/* #endif */
        if(layout->row_count==0)
                layout->column_count++;
-
 }
 
 

Index: layout.h
===================================================================
RCS file: /sources/antiright/antiright/xshell/layout.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- layout.h    20 Aug 2007 19:55:25 -0000      1.4
+++ layout.h    1 Sep 2007 18:13:07 -0000       1.5
@@ -24,8 +24,6 @@
 #define XSH_LAYOUT_H
 
 #define XSH_ROWS_PER_COLUMN 8
-#define XSH_WIDGET_WIDTH 96
-#define XSH_WIDGET_HEIGHT 16
 #define XSH_WIDGET_PADDING 2
 #define XSH_FONT_HEIGHT(xsh) (xsh->gui.font->max_bounds.ascent\
        + xsh->gui.font->max_bounds.descent)
@@ -38,9 +36,15 @@
 #define XSH_WIDGET_WIDTH_FOR_WORD(xsh) \
        (XSH_WORD_WIDTH(xsh)*XSH_WIDGET_PADDING)
 
+//#define XSH_WIDGET_HEIGHT 16
+#define XSH_WIDGET_HEIGHT (XSH_WIDGET_HEIGHT_FOR_FONT(xsh))
+//#define XSH_WIDGET_WIDTH (XSH_FONT_WIDTH(xsh)*16+XSH_WIDGET_PADDING*2)
+#define XSH_WIDGET_WIDTH 96
+
 #define XSH_STOP_LAYOUT (1<<31)
 
 void
 xsh_layout_widgets(XShell * xsh);
+
 #endif /* XSH_LAYOUT_H */
 

Index: xshell.c
===================================================================
RCS file: /sources/antiright/antiright/xshell/xshell.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- xshell.c    20 Aug 2007 19:55:25 -0000      1.7
+++ xshell.c    1 Sep 2007 18:13:07 -0000       1.8
@@ -23,20 +23,29 @@
 
 #include "xshell.h"
 
-#define SETUP_XSHELL_GUI_LAYOUT(layout)\
-       layout.row_count=0;\
-       layout.column_count=0;\
-       layout.max_row_count=XSH_ROWS_PER_COLUMN;\
-       layout.widget_width=XSH_WIDGET_WIDTH;
-
-#define SETUP_XSHELL_GUI(gui)\
-       gui.widgets=NULL;\
-       gui.widget_count=0;\
-       SETUP_XSHELL_GUI_LAYOUT(gui.layout);
-
-#define SETUP_XSHELL(xsh)\
-       xsh.options=0;\
-       SETUP_XSHELL_GUI(xsh.gui);
+static void
+setup_xshell_gui_layout(XShell * xsh, XShellGUILayout * layout)
+{
+       layout->row_count=0;
+       layout->column_count=0;
+       layout->max_row_count=XSH_ROWS_PER_COLUMN;
+       layout->widget_width=XSH_WIDGET_WIDTH;
+}
+
+static void
+setup_xshell_gui(XShell * xsh, XShellGUI * gui)
+{
+       gui->widgets=NULL;
+       gui->widget_count=0;
+       setup_xshell_gui_layout(xsh, &(gui->layout));
+}
+
+static void
+setup_xshell(XShell * xsh)
+{
+       xsh->options=0;
+       setup_xshell_gui(xsh, &(xsh->gui));
+}
 
 static void
 delete_widgets(XWidget * head)
@@ -90,10 +99,13 @@
        xsh_set_font(xsh, "-misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*");
 }
 
-#define APPLY_TOPLEVEL_GEOMETRY(xsh)\
-       XMoveWindow(xsh.gui.display, xsh.gui.widgets->window,\
-               xsh.gui.widgets->geometry.x,\
-               xsh.gui.widgets->geometry.y);\
+static void
+apply_toplevel_geometry(XShell * xsh)
+{
+       XMoveWindow(xsh->gui.display, xsh->gui.widgets->window,
+               xsh->gui.widgets->geometry.x,
+               xsh->gui.widgets->geometry.y);
+}
 
 int
 main(int argc, char ** argv)
@@ -102,7 +114,7 @@
 
        if(argc<=1)
                xsh_show_usage_and_exit();
-       SETUP_XSHELL(xsh);
+       setup_xshell(&xsh);
        xsh.gui.display=XOpenDisplay(NULL);
        setup_main_window(&xsh);
 #ifdef XSH_USE_GRADIENT
@@ -111,7 +123,7 @@
        xsh_parse_arguments(&xsh, argc, argv);
        show_main_window(&xsh);
        xsh_layout_widgets(&xsh);
-       APPLY_TOPLEVEL_GEOMETRY(xsh);
+       apply_toplevel_geometry(&xsh);
        xsh_event_loop(&xsh);
        cleanup(&xsh);
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]