GTK 3.14 for windows

This commit is contained in:
Crom (Thibaut CHARLES) 2015-03-12 00:34:35 +01:00
parent aaefc184e8
commit 883bc3f90d
2 changed files with 40 additions and 66 deletions

View File

@ -3,6 +3,7 @@
"description": "A minimal D application.", "description": "A minimal D application.",
"copyright": "Copyright © 2014, Administrateur", "copyright": "Copyright © 2014, Administrateur",
"authors": ["Administrateur"], "authors": ["Administrateur"],
"lflags-windows": ["/SUBSYSTEM:WINDOWS+gtkd"],
"dependencies": { "dependencies": {
"gtk-d": ">=2.4.1" "gtk-d": ">=2.4.1"
} }

View File

@ -5,6 +5,7 @@ import std.conv : to;
import gtk.Main; import gtk.Main;
import gtk.Version;
import gtk.MainWindow; import gtk.MainWindow;
import gtk.Widget; import gtk.Widget;
import gtk.TreeView; import gtk.TreeView;
@ -29,10 +30,15 @@ __gshared Object header;
void main(string[] args) void main(string[] args)
{ {
writeln("=================");
writeln("Using GTK version ",Version.getMajorVersion(),".",Version.getMinorVersion(),".",Version.getMicroVersion());
writeln("=================");
Main.init(args); Main.init(args);
//Window //Window
window = new MainWindow("2DA-Edit"); window = new MainWindow("2DA-Edit");
window.getSettings.setLongProperty("gtk-application-prefer-dark-theme", 1, "");
//
auto accel = new AccelGroup(); auto accel = new AccelGroup();
window.addAccelGroup(accel); window.addAccelGroup(accel);
@ -41,24 +47,14 @@ void main(string[] args)
window.add(cont); window.add(cont);
cont.setSizeRequest(300, 200); cont.setSizeRequest(300, 200);
version(Windows){ auto buttonSave = new Button("document-save-symbolic", GtkIconSize.MENU);
auto buttonSave = new Button(StockID.SAVE, true); auto buttonSaveAs = new Button("document-save-as-symbolic", GtkIconSize.MENU);
auto buttonSaveAs = new Button(StockID.SAVE_AS, true); auto buttonOpen = new Button("document-open-symbolic", GtkIconSize.MENU);
auto buttonOpen = new Button(StockID.OPEN, true); auto buttonInsert = new Button("format-text-direction-ltr-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonInsert = new Button(StockID.JUMP_TO, true); auto buttonDelete = new Button("user-trash-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonDelete = new Button(StockID.DELETE, true); auto buttonRenumber = new Button("view-list-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonRenumber = new Button(StockID.INDEX, true); auto buttonNewCol = new Button("tab-new-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonNewCol = new Button(StockID.NEW, true);
}
else{
auto buttonSave = new Button("document-save-symbolic", GtkIconSize.MENU);
auto buttonSaveAs = new Button("document-save-as-symbolic", GtkIconSize.MENU);
auto buttonOpen = new Button("document-open-symbolic", GtkIconSize.MENU);
auto buttonInsert = new Button("format-text-direction-ltr-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonDelete = new Button("user-trash-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonRenumber = new Button("view-list-symbolic", GtkIconSize.SMALL_TOOLBAR);
auto buttonNewCol = new Button("tab-new-symbolic", GtkIconSize.SMALL_TOOLBAR);
}
buttonSave.setTooltipText("Save"); buttonSave.setTooltipText("Save");
buttonSaveAs.setTooltipText("Save as"); buttonSaveAs.setTooltipText("Save as");
buttonOpen.setTooltipText("Open 2DA"); buttonOpen.setTooltipText("Open 2DA");
@ -71,30 +67,17 @@ void main(string[] args)
buttonSave.addAccelerator("clicked", accel, GDK_KEY_S, GdkModifierType.CONTROL_MASK, GtkAccelFlags.VISIBLE); buttonSave.addAccelerator("clicked", accel, GDK_KEY_S, GdkModifierType.CONTROL_MASK, GtkAccelFlags.VISIBLE);
buttonSaveAs.addAccelerator("clicked", accel, GDK_KEY_S, GdkModifierType.CONTROL_MASK|GdkModifierType.SHIFT_MASK, GtkAccelFlags.VISIBLE); buttonSaveAs.addAccelerator("clicked", accel, GDK_KEY_S, GdkModifierType.CONTROL_MASK|GdkModifierType.SHIFT_MASK, GtkAccelFlags.VISIBLE);
version(Windows){ //Header bar
//Menu bar import gtk.HeaderBar;
import gtk.HBox;
header = new HBox(false, 0); header = new HeaderBar();
cont.packStart(cast(HBox)header, false, false, 0); window.setTitlebar(cast(HeaderBar)header);
(cast(HeaderBar)header).setTitle("2DAEdit");
(cast(HeaderBar)header).setProperty("show-close-button", true);
(cast(HBox)header).packStart(buttonOpen, false, false, 0); (cast(HeaderBar)header).packStart(buttonOpen);
(cast(HBox)header).packEnd(buttonSaveAs, false, false, 0); (cast(HeaderBar)header).packEnd(buttonSaveAs);
(cast(HBox)header).packEnd(buttonSave, false, false, 0); (cast(HeaderBar)header).packEnd(buttonSave);
}
else{
//Header bar
import gtk.HeaderBar;
header = new HeaderBar();
window.setTitlebar(cast(HeaderBar)header);
(cast(HeaderBar)header).setTitle("2DAEdit");
(cast(HeaderBar)header).setProperty("show-close-button", true);
(cast(HeaderBar)header).packStart(buttonOpen);
(cast(HeaderBar)header).packEnd(buttonSaveAs);
(cast(HeaderBar)header).packEnd(buttonSave);
}
//Status bar //Status bar
statusbar = new HBox(false, 0); statusbar = new HBox(false, 0);
@ -289,24 +272,19 @@ void SaySomething(string msg){
lbl.setMarkup("<i>"~msg~"</i>"); lbl.setMarkup("<i>"~msg~"</i>");
statusbar.packEnd(lbl, false, false, 5); statusbar.packEnd(lbl, false, false, 5);
version(Windows){ //Wow, much animation, very badass
lbl.show(); lbl.setOpacity(0.0);
Thread.getThis.sleep(dur!"msecs"(1500)); lbl.show();
foreach(i ; 0..20){
lbl.setOpacity(i/20.0);
Thread.getThis.sleep(dur!"msecs"(10));
} }
else{ Thread.getThis.sleep(dur!"msecs"(1500));
//Wow, much animation, very badass foreach(i ; 1..20){
lbl.setOpacity(0.0); lbl.setOpacity(1.0-i/20.0);
lbl.show(); Thread.getThis.sleep(dur!"msecs"(10));
foreach(i ; 0..20){
lbl.setOpacity(i/20.0);
Thread.getThis.sleep(dur!"msecs"(10));
}
Thread.getThis.sleep(dur!"msecs"(1500));
foreach(i ; 1..20){
lbl.setOpacity(1.0-i/20.0);
Thread.getThis.sleep(dur!"msecs"(10));
}
} }
//Destroy //Destroy
lbl.destroy(); lbl.destroy();
}).start(); }).start();
@ -321,7 +299,7 @@ void Save(ref TreeView tree, string newpath=""){
} }
//Detect column sizes //Detect column sizes
ulong colSize[]; size_t colSize[];
colSize.length = tree.getNColumns; colSize.length = tree.getNColumns;
foreach(i ; 0..tree.getNColumns) foreach(i ; 0..tree.getNColumns)
colSize[i] = tree.getColumn(i).getTitle.length +1;//+1 space colSize[i] = tree.getColumn(i).getTitle.length +1;//+1 space
@ -371,11 +349,8 @@ void Save(ref TreeView tree, string newpath=""){
} }
void SetTitle(string title){ void SetTitle(string title){
version(Windows) window.setTitle(title); import gtk.HeaderBar;
else{ (cast(HeaderBar)header).setSubtitle(title);
import gtk.HeaderBar;
(cast(HeaderBar)header).setSubtitle(title);
}
} }
__gshared string openedFile; __gshared string openedFile;
@ -491,8 +466,7 @@ auto ref SetupColumn(TreeView tree, string sName, size_t index){
dlg.getContentArea.packStart(renamebox, false, false, 0); dlg.getContentArea.packStart(renamebox, false, false, 0);
auto renameentry = new Entry(col.getTitle); auto renameentry = new Entry(col.getTitle);
version(Windows) auto renamebutton = new Button(StockID.APPLY, true); auto renamebutton = new Button("object-select-symbolic", GtkIconSize.SMALL_TOOLBAR);
else auto renamebutton = new Button("object-select-symbolic", GtkIconSize.SMALL_TOOLBAR);
renamebutton.addOnClicked((Button){ renamebutton.addOnClicked((Button){
auto newname = renameentry.getText.strip; auto newname = renameentry.getText.strip;
if(newname.countchars(" \t\n\r")==0) if(newname.countchars(" \t\n\r")==0)
@ -507,8 +481,7 @@ auto ref SetupColumn(TreeView tree, string sName, size_t index){
auto deletebox = new HBox(false, 0); auto deletebox = new HBox(false, 0);
dlg.getContentArea.packStart(deletebox, false, false, 0); dlg.getContentArea.packStart(deletebox, false, false, 0);
version(Windows) auto deletebutton = new Button(StockID.DELETE, true); auto deletebutton = new Button("user-trash-symbolic", GtkIconSize.SMALL_TOOLBAR);
else auto deletebutton = new Button("user-trash-symbolic", GtkIconSize.SMALL_TOOLBAR);
deletebutton.addOnClicked((Button){ deletebutton.addOnClicked((Button){
tree.removeColumn(col); tree.removeColumn(col);
dlg.destroy(); dlg.destroy();