1 module dlangide.ui.homescreen; 2 3 import dlangui.widgets.layouts; 4 import dlangui.widgets.widget; 5 import dlangui.widgets.scroll; 6 import dlangui.widgets.controls; 7 import dlangide.ui.frame; 8 import dlangide.ui.commands; 9 import dlangui.core.i18n; 10 11 import std.path; 12 import std.utf : toUTF32; 13 14 immutable string HELP_PAGE_URL = "https://github.com/buggins/dlangide/wiki"; 15 immutable string HELP_DONATION_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=H2ADZV8S6TDHQ"; 16 17 18 class HomeScreen : ScrollWidget { 19 protected IDEFrame _frame; 20 protected HorizontalLayout _content; 21 protected VerticalLayout _startItems; 22 protected VerticalLayout _recentItems; 23 this(string ID, IDEFrame frame) { 24 super(ID); 25 import dlangide.ui.frame; 26 //styleId = STYLE_EDIT_BOX; 27 _frame = frame; 28 _content = new HorizontalLayout("HOME_SCREEN_BODY"); 29 _content.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT); 30 VerticalLayout _column1 = new VerticalLayout(); 31 int pad = BACKEND_GUI ? 20 : 1; 32 _column1.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT).padding(Rect(pad, pad, pad, pad)); 33 VerticalLayout _column2 = new VerticalLayout(); 34 _column2.layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT).padding(Rect(pad, pad, pad, pad)); 35 _content.addChild(_column1); 36 _content.addChild(_column2); 37 _column1.addChild((new TextWidget(null, "Dlang IDE "d ~ DLANGIDE_VERSION)).styleId("HOME_SCREEN_TITLE")); 38 _column1.addChild((new TextWidget(null, UIString.fromId("DESCRIPTION"c))).styleId("HOME_SCREEN_TITLE2")); 39 _column1.addChild((new TextWidget(null, UIString.fromId("COPYRIGHT"c))).styleId("HOME_SCREEN_TITLE2")); 40 _column1.addChild(new VSpacer()); 41 _column1.addChild((new TextWidget(null, UIString.fromId("START_WITH"c))).styleId("HOME_SCREEN_TITLE")); 42 _startItems = new VerticalLayout(); 43 _recentItems = new VerticalLayout(); 44 _startItems.addChild(new ImageTextButton(ACTION_FILE_OPEN_WORKSPACE)); 45 _startItems.addChild(new ImageTextButton(ACTION_FILE_NEW_WORKSPACE)); 46 _startItems.addChild(new ImageTextButton(ACTION_FILE_NEW_PROJECT)); 47 _column1.addChild(_startItems); 48 _column1.addChild(new VSpacer()); 49 50 // Recent workspaces 51 _column1.addChild((new TextWidget(null, UIString.fromId("RECENT"c))).styleId("HOME_SCREEN_TITLE")); 52 string[] recentWorkspaces = _frame.settings.recentWorkspaces; 53 if (recentWorkspaces.length) { 54 foreach(fn; recentWorkspaces) { 55 Action a = ACTION_FILE_OPEN_WORKSPACE.clone(); 56 a.label = UIString.fromRaw(toUTF32(stripExtension(baseName(fn)))); 57 a.stringParam = fn; 58 _column1.addChild(new LinkButton(a)); 59 } 60 } else { 61 _recentItems.addChild((new TextWidget(null, UIString.fromId("NO_RECENT"c)))); 62 } 63 _column1.addChild(_recentItems); 64 65 // Useful links 66 _column1.addChild(new VSpacer()); 67 _column2.addChild((new TextWidget(null, UIString.fromId("USEFUL_LINKS"c))).styleId("HOME_SCREEN_TITLE")); 68 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("D_LANG"c).value, "http://dlang.org/")); 69 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_DOWNLOADS"c).value, "https://dlang.org/download.html")); 70 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DUB_REP"c).value, "http://code.dlang.org/")); 71 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_UI"c).value, "https://github.com/buggins/dlangui")); 72 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_IDE"c).value, "https://github.com/buggins/dlangide")); 73 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_IDE_HELP"c).value, HELP_PAGE_URL)); 74 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_TOUR"c).value, "https://tour.dlang.org/")); 75 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_VIBED"c).value, "http://vibed.org/")); 76 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_FORUM"c).value, "http://forum.dlang.org/")); 77 _column1.addChild(new VSpacer()); 78 _column2.addChild((new TextWidget(null, UIString.fromId("DLANG_IDE_DONATE"c))).styleId("HOME_SCREEN_TITLE")); 79 _column2.addChild(new UrlImageTextButton(null, UIString.fromId("DLANG_IDE_DONATE_PAYPAL"c).value, HELP_DONATION_URL)); 80 81 _column2.addChild(new VSpacer()); 82 contentWidget = _content; 83 } 84 }