Skip to content

Commit 23587ae

Browse files
authored
Merge pull request #13 from sucksome/master
Modularize screen keyboard implementation
2 parents 4cf7764 + 9862517 commit 23587ae

7 files changed

+232
-196
lines changed

CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ add_executable(aris
4444
src/sen-parent.h
4545
src/sentence.c
4646
src/sentence.h
47+
src/sentence-screen-keyboard.h
48+
src/sentence-screen-keyboard.c
4749
src/sexpr-process-bool.c
4850
src/sexpr-process-equiv.c
4951
src/sexpr-process-infer.c

src/Makefile.am

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ aris_SOURCES += \
8282
sen-parent.c \
8383
sentence.h \
8484
sentence.c \
85+
sentence-screen-keyboard.h \
86+
sentence-screen-keyboard.c \
8587
sexpr-process.h \
8688
sexpr-process.c \
8789
sexpr-process-bool.c \

src/aris-proof.c

-195
Original file line numberDiff line numberDiff line change
@@ -1597,198 +1597,3 @@ aris_proof_to_latex (aris_proof * ap)
15971597

15981598
return 0;
15991599
}
1600-
1601-
1602-
void callback_and_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1603-
{
1604-
callback_sentence_screen_keyboard(widget, def_event, data, AND_TYPE);
1605-
}
1606-
1607-
void callback_or_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1608-
{
1609-
callback_sentence_screen_keyboard(widget, def_event, data, OR_TYPE);
1610-
}
1611-
1612-
void callback_not_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1613-
{
1614-
callback_sentence_screen_keyboard(widget, def_event, data, NOT_TYPE);
1615-
}
1616-
1617-
void callback_con_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1618-
{
1619-
callback_sentence_screen_keyboard(widget, def_event, data, CON_TYPE);
1620-
}
1621-
1622-
void callback_bic_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1623-
{
1624-
callback_sentence_screen_keyboard(widget, def_event, data, BIC_TYPE);
1625-
}
1626-
1627-
void callback_unv_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1628-
{
1629-
callback_sentence_screen_keyboard(widget, def_event, data, UNV_TYPE);
1630-
}
1631-
1632-
void callback_exl_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1633-
{
1634-
callback_sentence_screen_keyboard(widget, def_event, data, EXL_TYPE);
1635-
}
1636-
1637-
void callback_tau_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1638-
{
1639-
callback_sentence_screen_keyboard(widget, def_event, data, TAU_TYPE);
1640-
}
1641-
1642-
void callback_ctr_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1643-
{
1644-
callback_sentence_screen_keyboard(widget, def_event, data, CTR_TYPE);
1645-
}
1646-
1647-
void callback_elm_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1648-
{
1649-
callback_sentence_screen_keyboard(widget, def_event, data, ELM_TYPE);
1650-
}
1651-
1652-
void callback_nil_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data)
1653-
{
1654-
callback_sentence_screen_keyboard(widget, def_event, data, NIL_TYPE);
1655-
}
1656-
1657-
void callback_sentence_screen_keyboard(GtkWidget *widget, GdkEvent *def_event, gpointer *data, int type)
1658-
{
1659-
sen_parent *sp = (sen_parent *)data;
1660-
1661-
if (the_app->focused)
1662-
{
1663-
if (the_app->focused->goal->toggle)
1664-
sp = SEN_PARENT (the_app->focused->goal);
1665-
else
1666-
sp = SEN_PARENT (the_app->focused);
1667-
}
1668-
1669-
GdkEvent *event = gdk_event_new(GDK_KEY_PRESS);
1670-
1671-
event->key.window = gtk_widget_get_window(sp->window);
1672-
event->key.send_event = FALSE;
1673-
event->key.time = 0;
1674-
event->key.state = GDK_CONTROL_MASK;
1675-
switch (type)
1676-
{
1677-
case AND_TYPE:
1678-
event->key.keyval = GDK_KEY_7;
1679-
event->key.string = g_strdup("7");
1680-
break;
1681-
case OR_TYPE:
1682-
event->key.keyval = GDK_KEY_backslash;
1683-
event->key.string = g_strdup("\\");
1684-
break;
1685-
case NOT_TYPE:
1686-
event->key.keyval = GDK_KEY_grave;
1687-
event->key.string = g_strdup("^");
1688-
break;
1689-
case CON_TYPE:
1690-
event->key.keyval = GDK_KEY_4;
1691-
event->key.string = g_strdup("4");
1692-
break;
1693-
case BIC_TYPE:
1694-
event->key.keyval = GDK_KEY_5;
1695-
event->key.string = g_strdup("5");
1696-
break;
1697-
case UNV_TYPE:
1698-
event->key.keyval = GDK_KEY_2;
1699-
event->key.string = g_strdup("2");
1700-
break;
1701-
case EXL_TYPE:
1702-
event->key.keyval = GDK_KEY_3;
1703-
event->key.string = g_strdup("3");
1704-
break;
1705-
case TAU_TYPE:
1706-
event->key.keyval = GDK_KEY_1;
1707-
event->key.string = g_strdup("1");
1708-
break;
1709-
case CTR_TYPE:
1710-
event->key.keyval = GDK_KEY_6;
1711-
event->key.string = g_strdup("6");
1712-
break;
1713-
case ELM_TYPE:
1714-
event->key.keyval = GDK_KEY_semicolon;
1715-
event->key.string = g_strdup(";");
1716-
break;
1717-
case NIL_TYPE:
1718-
event->key.keyval = GDK_KEY_period;
1719-
event->key.string = g_strdup(".");
1720-
break;
1721-
default:; // should not happen
1722-
}
1723-
1724-
event->key.length = strlen(event->key.string);
1725-
gtk_main_do_event(event);
1726-
gdk_event_free(event);
1727-
gtk_window_present(GTK_WINDOW(sp->window)); // Set sentence window focus
1728-
}
1729-
1730-
GtkWidget *init_button(sen_parent *sp, GtkWidget *grid, char *type, int r, int c)
1731-
{
1732-
GdkPixbuf *symbol_pixbuf = gdk_pixbuf_scale_simple(sen_parent_get_conn_by_type(sp, type), 12, 12, GDK_INTERP_BILINEAR);
1733-
GtkWidget *image = gtk_image_new_from_pixbuf(symbol_pixbuf);
1734-
1735-
GtkWidget *button = gtk_button_new();
1736-
gtk_button_set_image(GTK_BUTTON(button), image);
1737-
gtk_grid_attach(GTK_GRID(grid), button, c, r, 1, 1);
1738-
return button;
1739-
}
1740-
1741-
void keyboard_delete(){
1742-
gtk_widget_hide (the_app->keyboard);
1743-
}
1744-
1745-
void init_sentence_screen_keyboard(sen_parent *sp)
1746-
{
1747-
GtkWidget *window_sentence_screen_keyboard = gtk_window_new(GTK_WINDOW_TOPLEVEL);
1748-
the_app->keyboard = window_sentence_screen_keyboard;
1749-
gtk_window_set_title(GTK_WINDOW(window_sentence_screen_keyboard), "Keyboard");
1750-
gtk_window_set_default_size(GTK_WINDOW(window_sentence_screen_keyboard), 150, 190);
1751-
gtk_window_set_resizable(GTK_WINDOW(window_sentence_screen_keyboard), FALSE);
1752-
g_signal_connect (the_app->keyboard, "delete-event", G_CALLBACK (keyboard_delete),NULL);
1753-
1754-
GtkWidget *grid1 = gtk_grid_new(); // Make a grid for the buttons
1755-
gtk_grid_set_column_spacing((GtkGrid *)grid1, 5);
1756-
gtk_grid_set_row_spacing((GtkGrid *)grid1, 5);
1757-
1758-
GtkWidget *button_and = init_button(sp, grid1, AND, 1, 1);
1759-
g_signal_connect(G_OBJECT(button_and), "button-press-event", G_CALLBACK(callback_and_screen_keyboard), (gpointer)sp);
1760-
GtkWidget *button_or = init_button(sp, grid1, OR, 1, 2);
1761-
g_signal_connect(G_OBJECT(button_or), "button-press-event", G_CALLBACK(callback_or_screen_keyboard), (gpointer)sp);
1762-
GtkWidget *button_not = init_button(sp, grid1, NOT, 1, 3);
1763-
g_signal_connect(G_OBJECT(button_not), "button-press-event", G_CALLBACK(callback_not_screen_keyboard), (gpointer)sp);
1764-
GtkWidget *button_con = init_button(sp, grid1, CON, 2, 1);
1765-
g_signal_connect(G_OBJECT(button_con), "button-press-event", G_CALLBACK(callback_con_screen_keyboard), (gpointer)sp);
1766-
GtkWidget *button_bic = init_button(sp, grid1, BIC, 2, 2);
1767-
g_signal_connect(G_OBJECT(button_bic), "button-press-event", G_CALLBACK(callback_bic_screen_keyboard), (gpointer)sp);
1768-
GtkWidget *button_unv = init_button(sp, grid1, UNV, 3, 1);
1769-
g_signal_connect(G_OBJECT(button_unv), "button-press-event", G_CALLBACK(callback_unv_screen_keyboard), (gpointer)sp);
1770-
GtkWidget *button_exl = init_button(sp, grid1, EXL, 3, 2);
1771-
g_signal_connect(G_OBJECT(button_exl), "button-press-event", G_CALLBACK(callback_exl_screen_keyboard), (gpointer)sp);
1772-
GtkWidget *button_tau = init_button(sp, grid1, TAU, 4, 1);
1773-
g_signal_connect(G_OBJECT(button_tau), "button-press-event", G_CALLBACK(callback_tau_screen_keyboard), (gpointer)sp);
1774-
GtkWidget *button_ctr = init_button(sp, grid1, CTR, 4, 2);
1775-
g_signal_connect(G_OBJECT(button_ctr), "button-press-event", G_CALLBACK(callback_ctr_screen_keyboard), (gpointer)sp);
1776-
GtkWidget *button_elm = init_button(sp, grid1, ELM, 5, 1);
1777-
g_signal_connect(G_OBJECT(button_elm), "button-press-event", G_CALLBACK(callback_elm_screen_keyboard), (gpointer)sp);
1778-
GtkWidget *button_nil = init_button(sp, grid1, NIL, 5, 2);
1779-
g_signal_connect(G_OBJECT(button_nil), "button-press-event", G_CALLBACK(callback_nil_screen_keyboard), (gpointer)sp);
1780-
gtk_container_add(GTK_CONTAINER(window_sentence_screen_keyboard), grid1);
1781-
gtk_widget_show_all(window_sentence_screen_keyboard);
1782-
1783-
int x, y;
1784-
int width, ap_width;
1785-
int new_x;
1786-
1787-
gtk_window_get_position (GTK_WINDOW (sp->window), &x, &y);
1788-
gtk_window_get_size (GTK_WINDOW (sp->window), &ap_width, NULL);
1789-
gtk_window_get_size (GTK_WINDOW (window_sentence_screen_keyboard), &width, NULL);
1790-
1791-
new_x = (width + 16 < x) ? x + ap_width + 16: x ;
1792-
1793-
gtk_window_move (GTK_WINDOW (window_sentence_screen_keyboard), new_x, y);
1794-
}

src/aris.c

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "app.h"
3939
#include "aris-proof.h"
4040
#include "rules-table.h"
41+
#include "sentence-screen-keyboard.h"
4142
#endif
4243

4344
// The options array for getopt_long.

src/callbacks.c

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "list.h"
3636
#include "sentence.h"
3737
#include "sen-parent.h"
38+
#include "sentence-screen-keyboard.h"
3839
#include "config.h"
3940
#include "vec.h"
4041
#include "var.h"
@@ -853,6 +854,7 @@ gui_toggle_keyboard (aris_proof *ap)
853854
else
854855
{
855856
gtk_widget_show_all (the_app->keyboard);
857+
align_keyboard( SEN_PARENT (ap) );
856858
aris_proof_set_sb (ap, _("Screen Keyboard Shown."));
857859
}
858860

0 commit comments

Comments
 (0)