Skip to content

Commit

Permalink
feat(wip)!: use gtk4
Browse files Browse the repository at this point in the history
  • Loading branch information
kanru committed Feb 3, 2024
1 parent 0709002 commit 8633bf7
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 67 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- uses: actions/checkout@v3

- name: Install build dependencies
run: sudo apt install -y libgtk-3-dev libibus-1.0-dev libx11-dev libchewing3-dev ibus gettext xvfb
run: sudo apt install -y libgtk-4-dev libibus-1.0-dev libx11-dev libchewing3-dev ibus gettext xvfb

- name: Build
run: |
Expand All @@ -35,7 +35,7 @@ jobs:
- uses: actions/checkout@v3

- name: Install build dependencies
run: sudo apt install -y libgtk-3-dev libibus-1.0-dev libx11-dev libchewing3-dev ibus gettext xvfb
run: sudo apt install -y libgtk-4-dev libibus-1.0-dev libx11-dev libchewing3-dev ibus gettext xvfb

- name: Install llvm
run: |
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ add_compile_definitions(
)

pkg_check_modules(GLIB2 REQUIRED IMPORTED_TARGET glib-2.0)
pkg_check_modules(GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4)
pkg_check_modules(X11 REQUIRED IMPORTED_TARGET x11)

set(CMAKE_C_STANDARD 99)
Expand Down
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ endif()
target_link_libraries(gui-core PUBLIC
common
PkgConfig::GLIB2
PkgConfig::GTK3
PkgConfig::GTK4
PkgConfig::X11
PkgConfig::IBUS
PkgConfig::CHEWING
Expand Down
44 changes: 15 additions & 29 deletions src/MakerDialogWidget.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ static void on_entry_activate_wrap(GtkEntry * entry, gpointer userData)
MkdgWidget *mWidget = (MkdgWidget *) userData;
GValue gValue = { 0 };
g_value_init(&gValue, mWidget->ctx->spec->valueType);
g_value_set_string(&gValue, gtk_entry_get_text(entry));
g_value_set_string(&gValue, gtk_editable_get_text(GTK_EDITABLE(entry)));

Check warning on line 182 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L182

Added line #L182 was not covered by tests
mkdg_log(INFO, "on_entry_activate_wrap(), key=%s value=%s",
mWidget->ctx->spec->key, g_value_get_string(&gValue));
on_value_change(mWidget, &gValue);
Expand Down Expand Up @@ -234,10 +234,11 @@ static void on_toggleButton_toggled_wrap(GtkToggleButton * button,

gint mkdg_wgt_get_width(MkdgWgt * wgt)
{
GtkRequisition requisition;
GtkRequisition min_size;
GtkRequisition natural_size;

Check warning on line 238 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L237-L238

Added lines #L237 - L238 were not covered by tests

gtk_widget_size_request(wgt, &requisition);
return requisition.width;
gtk_widget_get_preferred_size(wgt, &min_size, &natural_size);
return natural_size.width;

Check warning on line 241 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L240-L241

Added lines #L240 - L241 were not covered by tests
}

void mkdg_wgt_set_width(MkdgWgt * wgt, gint width)
Expand All @@ -247,7 +248,8 @@ void mkdg_wgt_set_width(MkdgWgt * wgt, gint width)

void mkdg_wgt_set_alignment(MkdgWgt * wgt, gfloat xAlign, gfloat yAlign)
{
gtk_misc_set_alignment(GTK_MISC(wgt), xAlign, yAlign);
gtk_widget_set_halign(wgt, xAlign);
gtk_widget_set_valign(wgt, yAlign);

Check warning on line 252 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L251-L252

Added lines #L251 - L252 were not covered by tests
if (GTK_IS_LABEL(wgt)) {
/* gtk_label_set_justify takes no effect on single line label,
* but multi-lined label need this
Expand All @@ -256,22 +258,6 @@ void mkdg_wgt_set_alignment(MkdgWgt * wgt, gfloat xAlign, gfloat yAlign)
}
}

void mkdg_wgt_show(MkdgWgt * wgt)
{
gtk_widget_show(wgt);
}

void mkdg_wgt_show_all(MkdgWgt * wgt)
{
gtk_widget_show_all(wgt);
}

void mkdg_wgt_destroy(MkdgWgt * wgt)
{
gtk_widget_destroy(wgt);
}


/*=====================================
* MkdgWidgetContainer subroutines
*/
Expand Down Expand Up @@ -302,10 +288,10 @@ void mkdg_widget_container_add_widget(MkdgWidgetContainer * container,
MkdgWgt *labelWgt = MKDG_WGT(mWidget->label);
MkdgWgt *wgt = mWidget->wgt;

gtk_box_pack_start(GTK_BOX(hbox), labelWgt, FALSE, FALSE, 0);
mkdg_wgt_show(labelWgt);
gtk_box_pack_start(GTK_BOX(hbox), wgt, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_prepend(GTK_BOX(hbox), labelWgt);

Check warning on line 291 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L291

Added line #L291 was not covered by tests
// mkdg_wgt_show(labelWgt);
gtk_box_prepend(GTK_BOX(hbox), wgt);
gtk_box_prepend(GTK_BOX(vbox), hbox);

Check warning on line 294 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L293-L294

Added lines #L293 - L294 were not covered by tests

g_ptr_array_add(container->children, mWidget);
container->childrenLabelWidth =
Expand Down Expand Up @@ -375,7 +361,7 @@ MkdgWidget *mkdg_widget_new(PropertyContext * ctx, MkdgWidgetFlag widgetFlags)
switch (ctx->spec->valueType) {
case G_TYPE_BOOLEAN:
bValue = g_value_get_boolean(property_context_get(ctx));
wgt = gtk_check_button_new();
wgt = gtk_toggle_button_new();

Check warning on line 364 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L364

Added line #L364 was not covered by tests
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(wgt), bValue);
g_signal_connect(wgt, "toggled",
G_CALLBACK(on_toggleButton_toggled_wrap), mWidget);
Expand Down Expand Up @@ -452,7 +438,7 @@ MkdgWidget *mkdg_widget_new(PropertyContext * ctx, MkdgWidgetFlag widgetFlags)
if (ctx->spec->max >= 0) {
gtk_entry_set_max_length(GTK_ENTRY(wgt), ctx->spec->max);
}
gtk_entry_set_text(GTK_ENTRY(wgt), strValue);
gtk_editable_set_text(GTK_EDITABLE(wgt), strValue);

Check warning on line 441 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L441

Added line #L441 was not covered by tests
gtk_editable_set_editable(GTK_EDITABLE(wgt),
!(ctx->spec->propertyFlags &
MKDG_PROPERTY_FLAG_NO_NEW));
Expand Down Expand Up @@ -525,7 +511,7 @@ GValue *mkdg_widget_get_widget_value(MkdgWidget * mWidget, GValue * value)
g_value_unset(strValue);
} else {
g_value_set_string(value,
gtk_entry_get_text(GTK_ENTRY(mWidget->wgt)));
gtk_editable_get_text(GTK_EDITABLE(mWidget->wgt)));

Check warning on line 514 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L514

Added line #L514 was not covered by tests
}
break;
default:
Expand Down Expand Up @@ -571,7 +557,7 @@ gboolean mkdg_widget_set_widget_value(MkdgWidget * mWidget, GValue * value)
gtk_combo_box_set_active(GTK_COMBO_BOX(mWidget->wgt), index);
} else {
g_value_set_string(value,
gtk_entry_get_text(GTK_ENTRY(mWidget->wgt)));
gtk_editable_get_text(GTK_EDITABLE(mWidget->wgt)));

Check warning on line 560 in src/MakerDialogWidget.c

View check run for this annotation

Codecov / codecov/patch

src/MakerDialogWidget.c#L560

Added line #L560 was not covered by tests
}
break;
default:
Expand Down
31 changes: 22 additions & 9 deletions src/ibus-setup-chewing.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,15 @@ static const GOptionEntry entries[] = {
{NULL},
};


void save_values(GtkDialog *sDialog, gint response_id, gpointer mDialog)
{
if (response_id != GTK_RESPONSE_OK) {
return;
}
maker_dialog_save_all_widgets_values(mDialog, NULL);
}

Check warning on line 62 in src/ibus-setup-chewing.c

View check run for this annotation

Codecov / codecov/patch

src/ibus-setup-chewing.c#L57-L62

Added lines #L57 - L62 were not covered by tests

gint start_dialog()
{
#ifdef USE_GSETTINGS
Expand All @@ -76,14 +85,15 @@ gint start_dialog()
MKDG_BUTTON_FLAG_OK | MKDG_BUTTON_FLAG_CANCEL);
GtkWidget *sDialog = GTK_WIDGET(mDialog);

gtk_widget_show_all(sDialog);
gint result = gtk_dialog_run(GTK_DIALOG(sDialog));
gtk_window_present(GTK_WINDOW(mDialog));
g_signal_connect(sDialog, "response", G_CALLBACK(save_values), mDialog);

Check warning on line 89 in src/ibus-setup-chewing.c

View check run for this annotation

Codecov / codecov/patch

src/ibus-setup-chewing.c#L88-L89

Added lines #L88 - L89 were not covered by tests
// gint result = gtk_dialog_run(GTK_DIALOG(sDialog));

gtk_widget_hide(sDialog);
if (result != GTK_RESPONSE_OK) {
return 3;
}
maker_dialog_save_all_widgets_values(mDialog, NULL);
// gtk_widget_hide(sDialog);
// if (result != GTK_RESPONSE_OK) {
// return 3;
// }
// maker_dialog_save_all_widgets_values(mDialog, NULL);
return 0;
}

Expand All @@ -92,7 +102,7 @@ gint main(gint argc, gchar * argv[])
GError *error = NULL;
GOptionContext *context;

gtk_init(&argc, &argv);
gtk_init();

/* Init i18n messages */
setlocale(LC_ALL, "");
Expand All @@ -117,7 +127,10 @@ gint main(gint argc, gchar * argv[])
return 0;
}
mkdg_log_set_level(verbose);
return start_dialog();
start_dialog();
while (true)
g_main_context_iteration (NULL, TRUE);
return 0;
}

/* vim:set et sts=4: */
2 changes: 1 addition & 1 deletion src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ int main(gint argc, gchar * argv[])
GError *error = NULL;
GOptionContext *context;

gtk_init(&argc, &argv);
gtk_init();

/* Init i18n messages */
setlocale(LC_ALL, "");
Expand Down
48 changes: 24 additions & 24 deletions src/maker-dialog.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ ___finalize(GObject *obj_self)
#define __GOB_FUNCTION__ "Maker:Dialog::finalize"
MakerDialog *self G_GNUC_UNUSED = MAKER_DIALOG (obj_self);
gpointer priv G_GNUC_UNUSED = self->_priv;
if(self->notebookWgt) { mkdg_wgt_destroy ((gpointer) self->notebookWgt); self->notebookWgt = NULL; }
if(self->notebookWgt) { g_object_unref ((gpointer) self->notebookWgt); self->notebookWgt = NULL; }

Check warning on line 128 in src/maker-dialog.c

View check run for this annotation

Codecov / codecov/patch

src/maker-dialog.c#L128

Added line #L128 was not covered by tests
if(self->_priv->containerTable) { g_hash_table_destroy ((gpointer) self->_priv->containerTable); self->_priv->containerTable = NULL; }
if(self->_priv->widgetTable) { g_hash_table_destroy ((gpointer) self->_priv->widgetTable); self->_priv->widgetTable = NULL; }
if(self->_priv->notebookContentTable) { g_hash_table_destroy ((gpointer) self->_priv->notebookContentTable); self->_priv->notebookContentTable = NULL; }
Expand Down Expand Up @@ -213,7 +213,7 @@ maker_dialog_new_full (MkdgProperties * properties, const gchar * title, MkdgWid
GtkDialog * dialog = GTK_DIALOG(self);
gtk_window_set_title(GTK_WINDOW(dialog), title);
gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
// gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
self->wFlags = wFlags;
self->_priv->properties = properties;

Expand All @@ -231,11 +231,11 @@ maker_dialog_new_full (MkdgProperties * properties, const gchar * title, MkdgWid

/* Create Notebook */
self->notebookWgt = gtk_notebook_new();
gtk_container_set_border_width(GTK_CONTAINER(self->notebookWgt), 5);
mkdg_wgt_show(self->notebookWgt);
// gtk_container_set_border_width(GTK_CONTAINER(self->notebookWgt), 5);
// mkdg_wgt_show(self->notebookWgt);
GtkWidget *dialogVboxWgt = gtk_dialog_get_content_area(GTK_DIALOG(self));
mkdg_wgt_show(dialogVboxWgt);
gtk_box_pack_start(GTK_BOX(dialogVboxWgt), self->notebookWgt, TRUE, TRUE, 0);
// mkdg_wgt_show(dialogVboxWgt);
gtk_box_prepend(GTK_BOX(dialogVboxWgt), self->notebookWgt);

Check warning on line 238 in src/maker-dialog.c

View check run for this annotation

Codecov / codecov/patch

src/maker-dialog.c#L238

Added line #L238 was not covered by tests

self_prepare(self);
return self;
Expand Down Expand Up @@ -280,15 +280,15 @@ maker_dialog_add_property (MakerDialog * self, PropertyContext * ctx)
/* Do we need a new container/page? */
if (container == NULL) {
MkdgWgt * vboxWgt = gtk_box_new(GTK_ORIENTATION_VERTICAL, MKDG_VBOX_SPACING_DEFAULT);
gtk_container_set_border_width(GTK_CONTAINER (vboxWgt), 10);
mkdg_wgt_show(vboxWgt);
// gtk_container_set_border_width(GTK_CONTAINER (vboxWgt), 10);
// mkdg_wgt_show(vboxWgt);
container = mkdg_widget_container_new(vboxWgt);
g_hash_table_insert(self->_priv->containerTable, (gpointer) pageName,
(gpointer) container);

/* new notebook page */
MkdgWgt * pageLabelWgt = gtk_label_new(_(pageName));
mkdg_wgt_show(pageLabelWgt);
// mkdg_wgt_show(pageLabelWgt);
gtk_notebook_append_page(GTK_NOTEBOOK(self->notebookWgt), vboxWgt,
pageLabelWgt);
}
Expand Down Expand Up @@ -496,22 +496,22 @@ maker_dialog_set_widget_value (MakerDialog * self, const gchar * key, GValue * v
}}
#undef __GOB_FUNCTION__

/**
* maker_dialog_show:
* @self: A MakerDialog.
*
**/
void
maker_dialog_show (MakerDialog * self)
{
#define __GOB_FUNCTION__ "Maker:Dialog::show"
g_return_if_fail (self != NULL);
g_return_if_fail (MAKER_IS_DIALOG (self));
{
// /**
// * maker_dialog_show:
// * @self: A MakerDialog.
// *
// **/
// void
// maker_dialog_show (MakerDialog * self)
// {
// #define __GOB_FUNCTION__ "Maker:Dialog::show"
// g_return_if_fail (self != NULL);
// g_return_if_fail (MAKER_IS_DIALOG (self));
// {

mkdg_wgt_show_all(GTK_WIDGET(self));
}}
#undef __GOB_FUNCTION__
// mkdg_wgt_show_all(GTK_WIDGET(self));
// }}
// #undef __GOB_FUNCTION__

MkdgWidget *
maker_dialog_get_widget_by_key (MakerDialog * self, const gchar * key)
Expand Down

0 comments on commit 8633bf7

Please sign in to comment.