Column conf in separate fun, global window, try at column adding
This commit is contained in:
parent
8c3bbad2c2
commit
df832b023b
1 changed files with 98 additions and 55 deletions
109
source/app.d
109
source/app.d
|
@ -21,12 +21,14 @@ import gtk.ScrolledWindow;
|
||||||
|
|
||||||
import gtk.HBox;
|
import gtk.HBox;
|
||||||
|
|
||||||
|
MainWindow window;
|
||||||
|
|
||||||
void main(string[] args)
|
void main(string[] args)
|
||||||
{
|
{
|
||||||
Main.init(args);
|
Main.init(args);
|
||||||
|
|
||||||
//Window
|
//Window
|
||||||
auto window = new MainWindow("2DA-Edit");
|
window = new MainWindow("2DA-Edit");
|
||||||
|
|
||||||
auto cont = new VBox(false, 0);
|
auto cont = new VBox(false, 0);
|
||||||
window.add(cont);
|
window.add(cont);
|
||||||
|
@ -42,6 +44,8 @@ void main(string[] args)
|
||||||
buttonDelete.setTooltipText("Delete row");
|
buttonDelete.setTooltipText("Delete row");
|
||||||
auto buttonRenumber = new Button("view-list-symbolic", GtkIconSize.SMALL_TOOLBAR);
|
auto buttonRenumber = new Button("view-list-symbolic", GtkIconSize.SMALL_TOOLBAR);
|
||||||
buttonRenumber.setTooltipText("Renumber all rows");
|
buttonRenumber.setTooltipText("Renumber all rows");
|
||||||
|
auto buttonNewCol = new Button("tab-new-symbolic", GtkIconSize.SMALL_TOOLBAR);
|
||||||
|
buttonNewCol.setTooltipText("Add new column");
|
||||||
|
|
||||||
version(Windows){
|
version(Windows){
|
||||||
//Menu bar
|
//Menu bar
|
||||||
|
@ -72,6 +76,7 @@ void main(string[] args)
|
||||||
statusbar.packStart(buttonRenumber, false, false, 5);
|
statusbar.packStart(buttonRenumber, false, false, 5);
|
||||||
statusbar.packStart(buttonInsert, false, false, 5);
|
statusbar.packStart(buttonInsert, false, false, 5);
|
||||||
statusbar.packStart(buttonDelete, false, false, 5);
|
statusbar.packStart(buttonDelete, false, false, 5);
|
||||||
|
statusbar.packEnd(buttonNewCol, false, false, 5);
|
||||||
|
|
||||||
//TreeView to display database
|
//TreeView to display database
|
||||||
auto scroll = new ScrolledWindow(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC);
|
auto scroll = new ScrolledWindow(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC);
|
||||||
|
@ -101,8 +106,8 @@ void main(string[] args)
|
||||||
auto res = fc.run();
|
auto res = fc.run();
|
||||||
if(res==GtkResponseType.OK){
|
if(res==GtkResponseType.OK){
|
||||||
string filename = fc.getFilename();
|
string filename = fc.getFilename();
|
||||||
version(Windows) Open(filename, window, tree, cast(Object)window);
|
version(Windows) Open(filename, tree, cast(Object)window);
|
||||||
else Open(filename, window, tree, cast(Object)header);
|
else Open(filename, tree, cast(Object)header);
|
||||||
}
|
}
|
||||||
fc.destroy();
|
fc.destroy();
|
||||||
});
|
});
|
||||||
|
@ -143,12 +148,38 @@ void main(string[] args)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
buttonNewCol.addOnClicked((Button){
|
||||||
|
auto store = cast(ListStore)tree.getModel();
|
||||||
|
int newColIndex = store.getNColumns();
|
||||||
|
|
||||||
|
|
||||||
|
GType[] types;
|
||||||
|
foreach(i ; 0..newColIndex+1)
|
||||||
|
types~= store.getColumnType(i);
|
||||||
|
store.setColumnTypes(types);
|
||||||
|
|
||||||
|
writeln(types.length);
|
||||||
|
|
||||||
|
|
||||||
|
//auto col = SetupColumn(tree, "new_col", newColIndex);
|
||||||
|
|
||||||
|
|
||||||
|
//TreeIter it = new TreeIter();
|
||||||
|
//if(store.getIterFirst(it)){
|
||||||
|
// do{
|
||||||
|
// store.setValue(it, newColIndex, "_");
|
||||||
|
// }while(store.iterNext(it));
|
||||||
|
//}
|
||||||
|
|
||||||
|
//tree.appendColumn(col);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Open if exists
|
//Open if exists
|
||||||
if(args.length>=2 && exists(args[1])){
|
if(args.length>=2 && exists(args[1])){
|
||||||
version(Windows) Open(args[1], window, tree, cast(Object)window);
|
version(Windows) Open(args[1], tree, cast(Object)window);
|
||||||
else Open(args[1], window, tree, cast(Object)header);
|
else Open(args[1], tree, cast(Object)header);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.showAll();
|
window.showAll();
|
||||||
|
@ -188,7 +219,7 @@ void Save(ref TreeView tree){
|
||||||
}
|
}
|
||||||
|
|
||||||
string openedFile;
|
string openedFile;
|
||||||
void Open(string file, ref MainWindow win, ref TreeView tree, Object header){
|
void Open(string file, ref TreeView tree, Object header){
|
||||||
|
|
||||||
auto twoda = new TwoDA(file);
|
auto twoda = new TwoDA(file);
|
||||||
|
|
||||||
|
@ -222,6 +253,40 @@ void Open(string file, ref MainWindow win, ref TreeView tree, Object header){
|
||||||
//Setup TreeView columns
|
//Setup TreeView columns
|
||||||
foreach(index, s ; twoda.header){
|
foreach(index, s ; twoda.header){
|
||||||
|
|
||||||
|
auto col = SetupColumn(tree, s, index);
|
||||||
|
tree.appendColumn(col);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Fill database
|
||||||
|
TreeIter iter = new TreeIter();
|
||||||
|
|
||||||
|
for(int i=0 ; i<=twoda.lastLine ; i++){
|
||||||
|
store.append(iter);
|
||||||
|
store.setValue(iter, 0, i);
|
||||||
|
|
||||||
|
if(i in twoda.values){
|
||||||
|
foreach(index, v ; twoda.values[i]){
|
||||||
|
store.setValue(iter, cast(int)index+1, v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
foreach(index ; 1..twoda.header.length){
|
||||||
|
store.setValue(iter, cast(int)index+1, "_");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Autosize columns
|
||||||
|
tree.columnsAutosize();
|
||||||
|
|
||||||
|
tree.setSizeRequest(50, 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Note: tree is only used on events (click)
|
||||||
|
auto ref SetupColumn(TreeView tree, string sName, size_t index){
|
||||||
|
auto store = cast(ListStore)tree.getModel();
|
||||||
|
|
||||||
CellRendererText cr = new CellRendererText();
|
CellRendererText cr = new CellRendererText();
|
||||||
cr.setProperty("editable", true);
|
cr.setProperty("editable", true);
|
||||||
if(index==0){
|
if(index==0){
|
||||||
|
@ -250,12 +315,13 @@ void Open(string file, ref MainWindow win, ref TreeView tree, Object header){
|
||||||
cr.setData("colnumber", cast(void*)cast(int)index);
|
cr.setData("colnumber", cast(void*)cast(int)index);
|
||||||
|
|
||||||
|
|
||||||
auto col = new TreeViewColumn(s, cr, "text", cast(int)index);
|
auto col = new TreeViewColumn(sName, cr, "text", cast(int)index);
|
||||||
col.setResizable(true);
|
col.setResizable(true);
|
||||||
|
col.setMinWidth(10);
|
||||||
col.setClickable(true);
|
col.setClickable(true);
|
||||||
col.addOnClicked((TreeViewColumn col){
|
col.addOnClicked((TreeViewColumn col){
|
||||||
import gtk.Dialog;
|
import gtk.Dialog;
|
||||||
auto dlg = new Dialog("Rename column", win, GtkDialogFlags.MODAL, ["Cancel","Rename"], [ResponseType.CANCEL, ResponseType.OK]);
|
auto dlg = new Dialog("Rename column", window, GtkDialogFlags.MODAL, ["Cancel","Rename"], [ResponseType.CANCEL, ResponseType.OK]);
|
||||||
auto entry = new Entry(col.getTitle);
|
auto entry = new Entry(col.getTitle);
|
||||||
dlg.getContentArea.packStart(entry, false, false, 5);
|
dlg.getContentArea.packStart(entry, false, false, 5);
|
||||||
entry.show();
|
entry.show();
|
||||||
|
@ -271,33 +337,10 @@ void Open(string file, ref MainWindow win, ref TreeView tree, Object header){
|
||||||
dlg.destroy();
|
dlg.destroy();
|
||||||
|
|
||||||
});
|
});
|
||||||
tree.appendColumn(col);
|
|
||||||
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Fill database
|
|
||||||
TreeIter iter = new TreeIter();
|
|
||||||
|
|
||||||
for(int i=0 ; i<=twoda.lastLine ; i++){
|
|
||||||
store.append(iter);
|
|
||||||
store.setValue(iter, 0, i);
|
|
||||||
|
|
||||||
if(i in twoda.values){
|
|
||||||
foreach(index, v ; twoda.values[i]){
|
|
||||||
store.setValue(iter, cast(int)index+1, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
foreach(index ; 1..twoda.header.length){
|
|
||||||
store.setValue(iter, cast(int)index+1, "_");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Autosize columns
|
|
||||||
tree.columnsAutosize();
|
|
||||||
|
|
||||||
tree.setSizeRequest(50, 50);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue