Example #1
0
int main(int argc, char *argv[])
{
    printf("Usage to click buttons: %s <window-title> <button-name>\n",
        argv[0]);
    printf("Usage to identify buttons: %s <window-title>\n", argv[0]);
    printf("Usage to identify windows: %s\n", argv[0]);

    switch (argc) {
    case 1:
        enum_windows();
        break;

    case 2:
        enum_buttons(argv[1]);
        break;

    case 3:
        click_button(argv[1], argv[2]);
        break;
    }

    return 1;

}
Example #2
0
void snap_button(struct dlg *dlg, struct button *bp, bool sizing, int *content)
{
    struct edges h;
    struct edges v;
    void *parent = NULL;

    int snapdist = g_snap_dist;
    int grid     = g_snap_usegrid ? g_snap_gridsize : 0;
    int padding  = g_snap_padding;

    if (snapdist < 1)
        return;

    h.dmin = v.dmin = h.def = v.def = snapdist;
    h.from2 = (h.from1 = bp->x0) + bp->w0;
    v.from2 = (v.from1 = bp->y0) + bp->h0;

    // ------------------------------------------------------
    // snap to grid
    if (grid > 1)// && (parent || sizing))
    {
        snap_to_grid(&h, &v, sizing, grid, padding);
    }
    else
    {
        struct snap_info si;

        si.h = &h;
        si.v = &v;
        si.sizing = sizing;
        si.same_level = true;
        si.pad = padding;
        si.self = bp;
        si.parent = parent;

        enum_buttons(dlg, snap_enum_proc, &si);

        h.to1 = 0;
        h.to2 = dlg->w;
        v.to1 = 0;
        v.to2 = dlg->h;
        snap_to_edge(&h, &v, sizing, false, padding);

        // -----------------------------------------
        if (sizing)
        {
            // snap to button icons
            if (content)
            {
                // images have to be double padded, since they are centered
                h.to2 = (h.to1 = h.from1) + content[0];
                v.to2 = (v.to1 = v.from1) + content[1];
                snap_to_edge(&h, &v, sizing, false, -2*padding);
            }

        /*
            // snap frame to childs
            si.same_level = false;
            si.pad = -padding;
            si.self = NULL;
            si.parent = self;
            enum_buttons(dlg, snap_enum_proc, &si);
        */
        }
    }

    // -----------------------------------------
    // adjust the window-pos

    if (h.dmin < snapdist) {
        if (sizing)
            bp->w0 += h.omin;
        else
            bp->x0 += h.omin;
    }
    if (v.dmin < snapdist) {
        if (sizing)
            bp->h0 += v.omin;
        else
            bp->y0 += v.omin;
    }
}