Loading repository data…
Loading repository data…
lhabacuc / repository
A libsf é uma biblioteca desenvolvida para facilitar a criação de interfaces gráficas de usuário (GUI) em C, utilizando a biblioteca GTK. Ela abstrai muitos dos detalhes do GTK, permitindo que desenvolvedores criem janelas e widgets de forma mais simples e com menos código repetitivo
██ ██ ██████ ███████ ███████
██ ██ ██ ██ ██ ██
██ ██ ██████ ███████ █████
██ ██ ██ ██ ██ ██
███████ ██ ██████ ███████ ██
libsft_roottypedef struct s_root
{
GtkWidget *window;
GtkWidget *fixed;
GtkWidget *item;
int x;
int y;
int th;
} t_root;
typedef struct s_window_manager
{
GtkWidget *main_window; // Janela principal
GtkWidget *settings_window; // Janela de configurações
GtkWidget *content_window; // Janela de conteúdo
GtkWidget *dialog_window; // Janela de diálogo
GtkWidget *tools_window; // Janela de ferramentas
GtkWidget *help_window; // Janela de ajuda
GtkWidget *temp_window; // Janela temporária
GtkWidget *fixed_layout_window; // Janela com layout fixo
GtkWidget *grid_layout_window; // Janela com layout em grid
GtkWidget *data_window; // Janela com dados
GtkWidget *preview_window; // Janela de visualização
} t_window_manager;
``
Esta estrutura é usada para armazenar referências a widgets GTK e posições no layout fixo.
### `t_key_event_data`
```c
typedef struct
{
void (*key_handler)(GdkEventKey *event, gpointer user_data);
gpointer user_data;
} t_key_event_data;
Estrutura para associar um manipulador de eventos de teclado e dados de usuário.
t_mouse_event_datatypedef struct
{
void (*mouse_handler)(GdkEventButton *event, gpointer user_data);
gpointer user_data;
} t_mouse_event_data;
Estrutura para associar um manipulador de eventos de mouse e dados de usuário.
t_loop_event_datatypedef struct
{
void (*loop_handler)(gpointer user_data);
gpointer user_data;
} t_loop_event_data;
Estrutura para associar um manipulador de eventos de loop e dados de usuário.
GtkWidget *create_window_s(const char *title, int width, int height);
GtkWidget *add_fixed_layout_to_window(GtkWidget *window);
GtkWidget *add_button(GtkWidget *container, const char *label, int x, int y, GCallback callback);
(x, y) com um rótulo e um callback.GtkWidget *add_label(GtkWidget *container, const char *text, int x, int y);
(x, y).GtkWidget *add_entry(GtkWidget *container, int x, int y, GCallback callback);
(x, y) com um callback.GtkWidget *add_color_chooser(GtkWidget *container, int x, int y, GCallback callback);
(x, y).GtkWidget *add_drawing_area(GtkWidget *container, int x, int y, int width, int height, GCallback draw_callback);
GtkWidget *add_file_chooser(GtkWidget *container, int x, int y, GCallback callback);
(x, y).GtkWidget *add_image(GtkWidget *container, const char *file_path, int x, int y);
(x, y).GtkWidget *add_separator(GtkWidget *container, int x, int y, gboolean horizontal);
void add_tabs(GtkWidget *notebook, GtkWidget **pages, const char **titles, int count);
GtkWidget *add_volume_slider(GtkWidget *container, int x, int y, GCallback callback);
(x, y).GtkWidget *add_checkbox(GtkWidget *container, const char *label, int x, int y, GCallback callback);
GtkWidget *create_image_with_position(GtkWidget *container, const char *file_path, int x, int y, int width, int height);
GtkWidget *create_scale_with_position(GtkWidget *container, int x, int y, int min, int max, int step);
GtkWidget *create_checkbox_with_position(GtkWidget *container, const char *label, int x, int y, gboolean active);
GtkWidget *create_drawing_area_with_position(GtkWidget *container, int x, int y, int width, int height, gboolean (*draw_callback)(GtkWidget *, cairo_t *, gpointer), gpointer data);
GtkWidget *create_label_with_position(GtkWidget *container, const char *text, int x, int y, const GdkRGBA *color);
GtkWidget *create_button_with_position(GtkWidget *container, const char *label, int x, int y, void (*callback)(GtkWidget *, gpointer), gpointer data);
GtkWidget *create_check_button(const char *label, gboolean initial_state);
GtkWidget *create_progress_bar(double initial_fraction);
GtkWidget *create_spin_button(double min, double max, double step, double initial_value);
GtkWidget *create_combo_box(const char **items, int num_items, int default_index);
GtkWidget *create_image_ph(GtkWidget *container, const char *file_path, gint x, gint y, gint width, gint height);
GtkWidget *create_vbox(gboolean homogeneous, gint spacing);
GtkWidget *create_hbox(gboolean homogeneous, gint spacing);
GtkWidget *create_grid(gint row_spacing, gint column_spacing);
GtkWidget *create_fixed_layout(void);
GtkWidget *create_entry1(GtkFixed *fixed, gint x, gint y, const char *border_color, void (*callback)(GtkEntry *, gpointer));
GtkWidget *create_label(GtkWidget *container, const char *text);
GtkWidget *create_text_view(GtkWidget *container);
void loop_window(GtkWidget *window);
Inicia o loop principal para a janela.
void add_event(GtkWidget *widget, const char *event_name, GCallback callback);
void add_to_fixed(GtkFixed *fixed, GtkWidget *widget, gint x, gint y);
void add_to_grid(GtkGrid *grid, GtkWidget *widget, guint left, guint top, guint width, guint height);
GtkWidget *new_window(const char *title, int width, int height);
void apply_css(GtkWidget *widget, const char *css);
void set_button_color(GtkWidget *button, const char *color);
void set_label_color(GtkWidget *label, const char *color);
void set_entry_border_color(GtkWidget *entry, const char *color);
void create_image(GtkFixed *fixed, const char *file_path, gint x, gint y);
void create_entry(GtkFixed *fixed, gint x, gint y);
void create_text(GtkFixed *fixed, const char *text, gint x, gint y);
void create_button(GtkFixed *fixed, const char *label, gint x, gint y, void (*callback)(GtkWidget *, gpointer), gpointer user_data);
void show_notification(GtkWidget *parent, const char *title, const char *message);
GtkWidget *create_image_c(GtkWidget *container, const char *file_path);
GtkWidget *create_calendar(GtkWidget *container);
GtkWidget *create_file_chooser_button(GtkWidget *container, const char *title, GtkFileChooserAction action, GCallback callback, gpointer data);
GtkWidget *create_color_chooser(GtkWidget *container, GCallback callback, gpointer data);
GtkWidget *create_notebook(GtkWidget *container);
void add_tab_to_notebook(GtkWidget *notebook, const char *label, GtkWidget *content);
GtkWidget *create_media_viewer(GtkWidget *container);
void set_status_bar_message(GtkWidget *status_bar, const char *message);
GtkWidget *create_toolbar(GtkWidget *container);
**`GtkToolItem *create_toolbar_button(GtkWidget *toolbar, const char *icon_name, const char *tooltip, GCallback callback, gpointer d
(x, y).GtkWidget *add_radio_button(GtkWidget *container, GtkWidget *group, const char *label, int x, int y);
GtkWidget *add_combo_box(GtkWidget *container, int x, int y, gchar **items, int item_count, GCallback callback);
(x, y).GtkWidget *add_calendar(GtkWidget *container, int x, int y, GCallback callback);
(x, y).GtkWidget *add_status_bar(GtkWidget *container, int x, int y);
(x, y).GtkWidget *add_context_menu(GtkWidget *widget, GtkWidget *menu);
GtkWidget *add_toolbar_with_buttons(GtkWidget *container, const char **button_labels, int count);
GtkWidget *add_spinner(GtkWidget *container, int x, int y);
(x, y).GtkWidget *add_text_view(GtkWidget *container, int x, int y, int width, int height);
void set_mouse_event_handler(GtkWidget *widget, void (*handler)(GdkEventButton *, gpointer), gpointer user_data);
void set_key_event_handler(GtkWidget *widget, void (*handler)(GdkEventKey *, gpointer), gpointer user_data);
void set_loop_event_handler(guint interval, void (*handler)(gpointer), gpointer user_data);