Seite 1 von 1

[erledigt] Hard-Coded vs. User-definierbar

Verfasst: 15.04.2008 19:55
von scholly
moin, moin...

Irgendwie scheint dieses Stoffwechsel-Endprodukt-Wetter auf mein Programmiergemüt zu schlagen :(
Vielleicht kann mir ja der ein oder andere von Euch etwas auf die Sprüng helfen.

In meiner Video-Verwaltung habe ich bisher den Aufbau eines TreeGadget nach folgendem Schema hardcoded:

Code: Alles auswählen

createmaintree:
;#############################################                                      
;{
;...Create the newly sized image list
newIL = ImageList_Create_(32, 32, #ILC_COLOR32|#ILC_MASK, 0, 700)

;...Icons für die Nodes laden
Define.l dummi             = LoadImage(  0,"gfx/0_dummy.ico") 
Define.l ico_all           = LoadImage(  1,"gfx/all.ico")

Define.l ico_speicherort   = LoadImage(  2,"gfx/speicherort.ico")
Define.l ico_hdd           = LoadImage( 21,"gfx/hdds.ico")
Define.l ico_cd            = LoadImage( 22,"gfx/cds.ico")
Define.l ico_dvd           = LoadImage( 23,"gfx/dvds.ico")

Define.l ico_genre         = LoadImage(  3,"gfx/genre.ico")
Define.l ico_lohntnich     = LoadImage(301,"gfx/_lohntnich.ico")
Define.l ico_abenteuer     = LoadImage(302,"gfx/abenteuer.ico")
Define.l ico_action        = LoadImage(303,"gfx/action.ico")
Define.l ico_anime         = LoadImage(304,"gfx/anime.ico")
Define.l ico_astro         = LoadImage(305,"gfx/astro.ico")
Define.l ico_comedian      = LoadImage(306,"gfx/comedian.ico")
Define.l ico_comic         = LoadImage(307,"gfx/comic.ico")
Define.l ico_diy           = LoadImage(308,"gfx/diy.ico")
Define.l ico_doku          = LoadImage(309,"gfx/doku.ico")
;.....  

Define.l ico_artist        = LoadImage(  4,"gfx/artist.ico")

Define.l ico_owner         = LoadImage(  5,"gfx/owner.ico")
Define.l ico_ugs           = LoadImage( 51,"gfx/ugs.ico")
 
Define.l ico_todo          = LoadImage(  6,"gfx/todo.ico")

;...Icons in die neue Liste
ImageList_ReplaceIcon_(newIL, -1, dummi)
ImageList_ReplaceIcon_(newIL, -1, ico_all)

ImageList_ReplaceIcon_(newIL, -1, ico_speicherort)
ImageList_ReplaceIcon_(newIL, -1, ico_hdd)
ImageList_ReplaceIcon_(newIL, -1, ico_cd)
ImageList_ReplaceIcon_(newIL, -1, ico_dvd)

ImageList_ReplaceIcon_(newIL, -1, ico_genre)
ImageList_ReplaceIcon_(newIL, -1, ico_lohntnich)
ImageList_ReplaceIcon_(newIL, -1, ico_abenteuer)
ImageList_ReplaceIcon_(newIL, -1, ico_action)
ImageList_ReplaceIcon_(newIL, -1, ico_anime)
ImageList_ReplaceIcon_(newIL, -1, ico_astro)
ImageList_ReplaceIcon_(newIL, -1, ico_comedian)
ImageList_ReplaceIcon_(newIL, -1, ico_comic)
ImageList_ReplaceIcon_(newIL, -1, ico_diy)
ImageList_ReplaceIcon_(newIL, -1, ico_doku)
;........

ImageList_ReplaceIcon_(newIL, -1, ico_artist)
ImageList_ReplaceIcon_(newIL, -1, ico_owner)
ImageList_ReplaceIcon_(newIL, -1, ico_ugs)
 
ImageList_ReplaceIcon_(newIL, -1, ico_todo)

;...Icons in das TreeGadget
AddGadgetItem(#main_tree, -1, "Alles",         ico_all,  0)

AddGadgetItem(#main_tree, -1, "Speicherort",   ico_speicherort,  0)
AddGadgetItem(#main_tree, -1, "HDDs",          ico_hdd, 1)
AddGadgetItem(#main_tree, -1, "CDs",           ico_cd, 1)
AddGadgetItem(#main_tree, -1, "DVDs",          ico_dvd, 1)

AddGadgetItem(#main_tree, -1, "Genre",         ico_genre, 0)
AddGadgetItem(#main_tree, -1, "_lohnt nich",   ico_lohntnich, 1)
AddGadgetItem(#main_tree, -1, "Abenteuer",     ico_abenteuer, 1)
AddGadgetItem(#main_tree, -1, "Action",        ico_action, 1)
AddGadgetItem(#main_tree, -1, "Anime",         ico_anime, 1)
AddGadgetItem(#main_tree, -1, "Astro",         ico_astro, 1)
AddGadgetItem(#main_tree, -1, "Comedian",      ico_comedian, 1)
AddGadgetItem(#main_tree, -1, "Comic",         ico_comic, 1)
AddGadgetItem(#main_tree, -1, "DIY",           ico_diy, 1)
AddGadgetItem(#main_tree, -1, "Doku",          ico_doku, 1)
;......
 
AddGadgetItem(#main_tree, -1, "Artist",        ico_artist,  0)
AddGadgetItem(#main_tree, -1, "Owner",         ico_owner,  0)
AddGadgetItem(#main_tree, -1, "ugs",           ico_ugs, 1)
 
AddGadgetItem(#main_tree, -1, "To Do",         ico_todo,  0)
     
;...Get handle to current TreeGadget normal image list
oldIL = SendMessage_(GadgetID(#main_tree), #TVM_GETIMAGELIST, #TVSIL_NORMAL, 0)

;...Replace the old image list with our new one
SendMessage_(GadgetID(#main_tree), #TVM_SETIMAGELIST, #TVSIL_NORMAL, newIL)
;}
Return; createmaintree
Da sich die Zielgruppe verflüchtigt hat, will ich das Programm jetzt so umschreiben, daß es auch Andere als nützlich empfinden und Ihren Bedürfnissen teilweise anpassen können.
Da bestimmt nicht jeder mit meinen Vorgaben übereinstimmt, sollen u.a. die ganzen Icons (bzw. deren Pfade) und die Genres über ein Prefs-Fenster erfaßt und mit in die SQLite-DB geschrieben werden.

Ich hab jetzt 2 Tage darüber gebrütet, wie ich das am geschicktesten in einen oder mehrere Tables verfrachte, aber es ist leider kein Konzept geschlüpft :(

Hat jemand eine zündende Idee ?

mDv... scholly

Verfasst: 15.04.2008 20:34
von NicTheQuick
Vielleicht so:

Code: Alles auswählen

CREATE TABLE "tree" (
  "parent_id" INTEGER DEFAULT -1,
  "id" INTEGER PRIMARY KEY,
  "order" INTEGER,
  "text" VARCHAR(255),
  "icon" VARCHAR(255)
);
Ich weiß grad nicht, ob das syntaktisch stimmt, aber so kannst du dir eine
Tabelle basteln, die jedem Eintrag eine ID zuordnet und eine Position 'order', einen Anzeigetext 'text' und den Iconpfad 'icon' hat. 'parent_id' gibt zusätzlich
an, ob der Eintrag ein Untereintrag eines anderen Eintrags mit der Id
'parent_id' ist.

Verfasst: 15.04.2008 22:03
von scholly
NicTheQuick hat geschrieben:Vielleicht so:....
Ich weiß grad nicht, ob das syntaktisch stimmt
Nö, aber das macht nix, für SQLite lass ich die Typen-Festlegung einfach weg ;)

Der Ansatz sieht vielversprechend aus, ma gucken, ob ich das erfolgreich aus einem Prefs-Editor raus schreiben und in eine App einlesen und nutzen kann.

:allright: Schankedön...