Created
September 26, 2019 09:09
-
-
Save LinArcX/94b2a4e732869c1d2b6cb18ac1596663 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <gtk/gtk.h> | |
void close_window(GtkWidget* widget, gpointer data) | |
{ | |
gtk_window_close(widget); | |
} | |
void show_simple_window() | |
{ | |
GtkApplication* app; | |
GtkWidget* window; | |
GtkWidget* grid; | |
GtkWidget* button; | |
app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE); | |
/* create a new window, and set its title */ | |
window = gtk_application_window_new(app); | |
gtk_window_set_title(GTK_WINDOW(window), "Window"); | |
gtk_container_set_border_width(GTK_CONTAINER(window), 10); | |
/* Here we construct the container that is going pack our buttons */ | |
grid = gtk_grid_new(); | |
/* Pack the container in the window */ | |
gtk_container_add(GTK_CONTAINER(window), grid); | |
button = gtk_button_new_with_label("Button 1"); | |
//g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL); | |
/* Place the first button in the grid cell (0, 0), and make it fill just 1 cell horizontally and vertically (ie no spanning) */ | |
gtk_grid_attach(GTK_GRID(grid), button, 0, 0, 1, 1); | |
button = gtk_button_new_with_label("Button 2"); | |
//g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL); | |
/* Place the second button in the grid cell (1, 0), and make it fill just 1 cell horizontally and vertically (ie no spanning) */ | |
gtk_grid_attach(GTK_GRID(grid), button, 1, 0, 1, 1); | |
button = gtk_button_new_with_label("Quit"); | |
g_signal_connect_swapped(button, "clicked", G_CALLBACK(close_window), window); //gtk_widget_destroy | |
/* Place the Quit button in the grid cell (0, 1), and make it span 2 columns. */ | |
gtk_grid_attach(GTK_GRID(grid), button, 0, 1, 2, 1); | |
/* Now that we are done packing our widgets, we show them all | |
* in one go, by calling gtk_widget_show_all() on the window. | |
* This call recursively calls gtk_widget_show() on all widgets | |
* that are contained in the window, directly or indirectly. | |
*/ | |
gtk_widget_show_all(window); | |
g_object_unref(app); | |
} | |
void setTimeout(int milliseconds) | |
{ | |
// If milliseconds is less or equal to 0 | |
// will be simple return from function without throw error | |
if (milliseconds <= 0) { | |
fprintf(stderr, "Count milliseconds for timeout is less or equal to 0\n"); | |
return; | |
} | |
// a current time of milliseconds | |
int milliseconds_since = clock() * 1000 / CLOCKS_PER_SEC; | |
// needed count milliseconds of return from this timeout | |
int end = milliseconds_since + milliseconds; | |
// wait while until needed time comes | |
do { | |
milliseconds_since = clock() * 1000 / CLOCKS_PER_SEC; | |
} while (milliseconds_since <= end); | |
} | |
void repetitive_task() | |
{ | |
int delay = 5; | |
start_point: | |
// counter downtime for run a rocket while the delay with more 0 | |
do { | |
// erase the previous line and display remain of the delay | |
printf("\n\033[ATime left for open new window: %d\n", delay); | |
// a timeout for display | |
setTimeout(1000); | |
// decrease the delay to 1 | |
delay--; | |
} while (delay >= 0); | |
show_simple_window(); | |
delay = 5; | |
goto start_point; | |
} | |
int main(int argc, char** argv) | |
{ | |
gtk_init(&argc, &argv); | |
repetitive_task(); | |
//show_simple_window(); | |
gtk_main(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment