Initial version
This commit is contained in:
commit
0c8af95e42
14
Makefile
Normal file
14
Makefile
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
CFLAGS = -O2 -Wall `pkg-config --cflags --libs gtk+-2.0`
|
||||||
|
EXE = mysql_console
|
||||||
|
|
||||||
|
all:
|
||||||
|
$(CC) -o $(EXE) $(CFLAGS) main.c
|
||||||
|
|
||||||
|
debug:
|
||||||
|
$(CC) -DDEBUG -o $(EXE) $(CFLAGS) -g main.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(EXE)
|
||||||
|
|
||||||
|
.PHONY: clean all debug
|
||||||
|
|
6
README
Normal file
6
README
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
This little GTK2 app opens a terminal in which is logs in to a server
|
||||||
|
via SSH and opens up the MySQL command line client. Why I wrote a C
|
||||||
|
app for this, I can’t recall.
|
||||||
|
|
||||||
|
I release this for the public domain, hoping that someone may learn
|
||||||
|
something from it.
|
190
main.c
Normal file
190
main.c
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
|
||||||
|
static char * mysql_console_16_xpm[] = {
|
||||||
|
"16 16 4 1",
|
||||||
|
" c None",
|
||||||
|
". c #000000",
|
||||||
|
"+ c #FFFFFF",
|
||||||
|
"@ c #808080",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" .............. ",
|
||||||
|
".++++++++++++++.",
|
||||||
|
".++++++++++++++.",
|
||||||
|
".+@@@++@@+++@++.",
|
||||||
|
".+@+++@++@++@++.",
|
||||||
|
".+@@++@++@++@++.",
|
||||||
|
".+++@+@++@++@++.",
|
||||||
|
".+++@+@++@++@++.",
|
||||||
|
".+@@@++@@+++@@+.",
|
||||||
|
".++++++++@@++++.",
|
||||||
|
".++++++++++++++.",
|
||||||
|
" .............. ",
|
||||||
|
" ",
|
||||||
|
" "};
|
||||||
|
|
||||||
|
GtkWidget *window,
|
||||||
|
*ssh_user_field,
|
||||||
|
*ssh_host_field,
|
||||||
|
*mysql_user_field,
|
||||||
|
*mysql_db_field,
|
||||||
|
*mysql_pass_field,
|
||||||
|
*ok_gomb;
|
||||||
|
|
||||||
|
void
|
||||||
|
destroy_window(GtkWidget *window, gpointer data)
|
||||||
|
{
|
||||||
|
gtk_main_quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ok_clicked(GtkWidget *gomb, gpointer data)
|
||||||
|
{
|
||||||
|
gchar *cmd;
|
||||||
|
gint len;
|
||||||
|
|
||||||
|
if ((strlen(gtk_entry_get_text(GTK_ENTRY(ssh_host_field))) > 0) && (strlen(gtk_entry_get_text(GTK_ENTRY(mysql_user_field))) > 0) && (strlen(gtk_entry_get_text(GTK_ENTRY(mysql_db_field))) > 0))
|
||||||
|
{
|
||||||
|
len = 87 +
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(ssh_user_field))) * 2) +
|
||||||
|
((strlen(gtk_entry_get_text(GTK_ENTRY(ssh_user_field))) > 0) ? 1 : 0) +
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(ssh_host_field))) * 2) +
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(mysql_user_field))) * 2) +
|
||||||
|
strlen(gtk_entry_get_text(GTK_ENTRY(mysql_pass_field))) +
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(mysql_db_field))) * 2);
|
||||||
|
cmd = g_malloc(len);
|
||||||
|
memset(cmd, 0, len);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("%d\n", strlen("gnome-terminal -t \"MySQL console - %s%s%s - %s@%s\" -x ssh -t %s%s%s mysql -u %s -p%s %s"));
|
||||||
|
#endif /* DEBUG */
|
||||||
|
sprintf(
|
||||||
|
cmd,
|
||||||
|
"gnome-terminal -t \"MySQL console - %s%s%s - %s@%s\" -x ssh -t %s%s%s mysql -u %s -p%s %s",
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(ssh_user_field)),
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(ssh_user_field))) > 0) ? "@" : "",
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(ssh_host_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(mysql_user_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(mysql_db_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(ssh_user_field)),
|
||||||
|
(strlen(gtk_entry_get_text(GTK_ENTRY(ssh_user_field))) > 0) ? "@" : "",
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(ssh_host_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(mysql_user_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(mysql_pass_field)),
|
||||||
|
gtk_entry_get_text(GTK_ENTRY(mysql_db_field))
|
||||||
|
);
|
||||||
|
|
||||||
|
gtk_widget_hide(window);
|
||||||
|
system(cmd);
|
||||||
|
gtk_widget_destroy(window);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GtkWidget *dialog;
|
||||||
|
|
||||||
|
dialog = gtk_message_dialog_new(GTK_WINDOW(window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Kötelező kitölteni az SSH host, MySQL felhasználónév és MySQL adatbázis mezőket!");
|
||||||
|
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
|
gtk_widget_hide(dialog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cancel_clicked(GtkWidget *gomb, gpointer data)
|
||||||
|
{
|
||||||
|
gtk_widget_destroy(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
entry_activate(GtkWidget *entry, gpointer data)
|
||||||
|
{
|
||||||
|
gtk_button_clicked(GTK_BUTTON(ok_gomb));
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
window_keypress(GtkWidget *widget, GdkEventKey *event, gpointer data)
|
||||||
|
{
|
||||||
|
if (event->keyval == GDK_Escape)
|
||||||
|
{
|
||||||
|
gtk_widget_destroy(window);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
GtkWidget *ssh_user_label,
|
||||||
|
*ssh_host_label,
|
||||||
|
*mysql_user_label,
|
||||||
|
*mysql_db_label,
|
||||||
|
*mysql_pass_label,
|
||||||
|
*megsem_gomb,
|
||||||
|
*tabla;
|
||||||
|
|
||||||
|
GdkPixbuf *window_icon;
|
||||||
|
|
||||||
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
|
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
||||||
|
ssh_user_label = gtk_label_new("SSH felhasználónév:");
|
||||||
|
ssh_user_field = gtk_entry_new();
|
||||||
|
|
||||||
|
ssh_host_label = gtk_label_new("SSH host:");
|
||||||
|
ssh_host_field = gtk_entry_new();
|
||||||
|
|
||||||
|
mysql_user_label = gtk_label_new("MySQL user:");
|
||||||
|
mysql_user_field = gtk_entry_new();
|
||||||
|
|
||||||
|
mysql_db_label = gtk_label_new("MySQL adatbázis:");
|
||||||
|
mysql_db_field = gtk_entry_new();
|
||||||
|
|
||||||
|
mysql_pass_label = gtk_label_new("MySQL jelszó:");
|
||||||
|
mysql_pass_field = gtk_entry_new();
|
||||||
|
|
||||||
|
ok_gomb = gtk_button_new_from_stock(GTK_STOCK_OK);
|
||||||
|
megsem_gomb = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
|
||||||
|
|
||||||
|
tabla = gtk_table_new(6, 2, FALSE);
|
||||||
|
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), ssh_host_label, 0, 1, 0, 1);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), ssh_host_field, 1, 2, 0, 1);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), ssh_user_label, 0, 1, 1, 2);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), ssh_user_field, 1, 2, 1, 2);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_user_label, 0, 1, 2, 3);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_user_field, 1, 2, 2, 3);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_pass_label, 0, 1, 3, 4);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_pass_field, 1, 2, 3, 4);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_db_label, 0, 1, 4, 5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), mysql_db_field, 1, 2, 4, 5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), ok_gomb, 0, 1, 5, 6);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tabla), megsem_gomb, 1, 2, 5, 6);
|
||||||
|
|
||||||
|
gtk_container_add(GTK_CONTAINER(window), tabla);
|
||||||
|
|
||||||
|
gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(destroy_window), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(ok_gomb), "clicked", GTK_SIGNAL_FUNC(ok_clicked), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(megsem_gomb), "clicked", GTK_SIGNAL_FUNC(cancel_clicked), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(ssh_host_field), "activate", GTK_SIGNAL_FUNC(entry_activate), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(ssh_user_field), "activate", GTK_SIGNAL_FUNC(entry_activate), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(mysql_user_field), "activate", GTK_SIGNAL_FUNC(entry_activate), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(mysql_pass_field), "activate", GTK_SIGNAL_FUNC(entry_activate), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(mysql_db_field), "activate", GTK_SIGNAL_FUNC(entry_activate), NULL);
|
||||||
|
gtk_signal_connect(GTK_OBJECT(window), "key-press-event", GTK_SIGNAL_FUNC(window_keypress), NULL);
|
||||||
|
|
||||||
|
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
|
||||||
|
gtk_window_set_title(GTK_WINDOW(window), "MySQL console");
|
||||||
|
window_icon = gdk_pixbuf_new_from_xpm_data((const char **)mysql_console_16_xpm);
|
||||||
|
gtk_window_set_default_icon(window_icon);
|
||||||
|
|
||||||
|
gtk_widget_show_all(window);
|
||||||
|
|
||||||
|
gtk_main();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
23
mysql_console_16.xpm
Normal file
23
mysql_console_16.xpm
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * mysql_konzol_16_xpm[] = {
|
||||||
|
"16 16 4 1",
|
||||||
|
" c None",
|
||||||
|
". c #000000",
|
||||||
|
"+ c #FFFFFF",
|
||||||
|
"@ c #808080",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" .............. ",
|
||||||
|
".++++++++++++++.",
|
||||||
|
".++++++++++++++.",
|
||||||
|
".+@@@++@@+++@++.",
|
||||||
|
".+@+++@++@++@++.",
|
||||||
|
".+@@++@++@++@++.",
|
||||||
|
".+++@+@++@++@++.",
|
||||||
|
".+++@+@++@++@++.",
|
||||||
|
".+@@@++@@+++@@+.",
|
||||||
|
".++++++++@@++++.",
|
||||||
|
".++++++++++++++.",
|
||||||
|
" .............. ",
|
||||||
|
" ",
|
||||||
|
" "};
|
Loading…
Reference in New Issue
Block a user