Update post_install script
[GameHub.git] / src / ui / dialogs / GOGGameInstallDialog.vala
blob302f1020be7c4d58a8f8239bc46420524744fe9f
1 using Gtk;
2 using GLib;
3 using Gee;
4 using GameHub.Utils;
6 using GameHub.Data;
7 using GameHub.Data.Sources.GOG;
9 namespace GameHub.UI.Dialogs
11 public class GOGGameInstallDialog: Granite.MessageDialog
13 public signal void install(GOGGame.Installer installer);
14 public signal void canceled();
16 private ListBox languages_list;
18 private bool is_finished = false;
20 public GOGGameInstallDialog(GOGGame game, ArrayList<GOGGame.Installer> installers)
22 Object(transient_for: Windows.MainWindow.instance, deletable: false, resizable: false);
24 set_modal(true);
26 image_icon = Icon.new_for_string("go-down");
28 primary_text = game.name;
30 languages_list = new ListBox();
32 var sys_langs = Intl.get_language_names();
34 foreach(var installer in installers)
36 var row = new LangRow(installer);
37 languages_list.add(row);
39 if(installer.lang in sys_langs)
41 languages_list.select_row(row);
45 if(installers.size > 1)
47 secondary_text = _("Select game language");
48 custom_bin.child = languages_list;
51 destroy.connect(() => { if(!is_finished) canceled(); });
53 response.connect((source, response_id) => {
54 switch(response_id)
56 case ResponseType.CANCEL:
57 destroy();
58 break;
60 case ResponseType.ACCEPT:
61 var installer = installers[0];
62 if(installers.size > 1)
64 var row = languages_list.get_selected_row() as LangRow;
65 installer = row.installer;
67 is_finished = true;
68 install(installer);
69 destroy();
70 break;
72 });
74 add_button(_("Cancel"), ResponseType.CANCEL);
75 var install_btn = add_button(_("Install"), ResponseType.ACCEPT);
76 install_btn.get_style_context().add_class(STYLE_CLASS_SUGGESTED_ACTION);
77 install_btn.grab_default();
79 show_all();
82 private class LangRow: ListBoxRow
84 public GOGGame.Installer installer;
86 public LangRow(GOGGame.Installer installer)
88 this.installer = installer;
90 var label = new Label(installer.lang_full);
91 label.xpad = 16;
92 label.ypad = 4;
93 child = label;