Changeset 92

Show
Ignore:
Timestamp:
07/18/10 02:58:32 (2 years ago)
Author:
Chris Miller
Message:

DFL GTK updates

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/gtk/dfl/control.d

    r91 r92  
    9292     
    9393     
    94     protected void gtkRequest(GtkWidget* w, GtkRequisition* req) 
    95     { 
    96         printf("GTKREQUEST\n"); 
    97          
    98         req.width = 100; 
    99         req.height = 100; 
    100     } 
    101      
    102     private void _gtkRequest(GtkWidget* w, GtkRequisition* req) 
    103     { 
    104         return gtkRequest(w, req); 
    105     } 
    106      
    107      
    108     protected void gtkAllocate(GtkWidget* w, GtkAllocation* a) 
    109     { 
    110         // GTK reporting the position... 
    111          
    112         printf("GTKALLOCATE x=%d; y=%d; width=%d; height=%d\n", a.x, a.y, a.width, a.height); 
    113          
    114         //w.allocation.width = 200; 
    115         //w.allocation.height = 200; 
    116     } 
    117      
    118     private void _gtkAllocate(GtkWidget* w, GtkAllocation* a) 
    119     { 
    120         return gtkAllocate(w, a); 
    121     } 
    122      
    123      
    124     package void _createcontainer() 
     94    protected GtkContainer* gtkGetContainer(bool autoCreate = true) 
    12595    { 
    12696        if(wcontainer) 
    127             return; 
    128          
    129         assert(wid); 
     97            return wcontainer; 
     98        if(!autoCreate) 
     99            return null; 
     100         
     101        if(!isHandleCreated) 
     102            throw new DflException("Handle must be created before getting container (gtkGetContainer)"); 
    130103         
    131104        wcontainer = cast(GtkContainer*)gtk_fixed_new(); 
     
    134107        gtk_widget_realize(cast(GtkWidget*)wcontainer); 
    135108        gtk_widget_show(cast(GtkWidget*)wcontainer); 
     109         
     110        return wcontainer; 
    136111    } 
    137112     
     
    149124            if(wparent) 
    150125            { 
    151                 wparent._createcontainer(); 
    152                 parent = wparent.wcontainer; 
     126                parent = wparent.gtkGetContainer(); 
    153127            } 
    154128            text = wtext; 
     
    186160        } 
    187161         
    188         //gtk_widget_set_size_request(wid, defaultSize.width, defaultSize.height); // ... 
    189         //gtk_fixed_put 
     162        gtk_widget_set_size_request(wid, defaultSize.width, defaultSize.height); 
    190163         
    191164        postcreateinit(cp); 
     
    201174        if(cp.parent) 
    202175        { 
    203             //gtk_container_add(cast(GtkContainer*)cp.parent, wid); 
    204176            gtk_container_add(cp.parent, wid); 
    205177        } 
    206178         
    207         gtk_widget_realize(wid); // ... 
    208         gtk_widget_show(wid); // ... 
     179        gtk_widget_realize(wid); 
     180        gtk_widget_show(wid); // if visible... 
    209181    } 
    210182     
     
    227199        if(isHandleCreated) 
    228200        { 
     201            gtkSetTextCore(txt); 
     202             
    229203            if(ctrlStyle & ControlStyles.CACHE_TEXT) 
    230             { 
    231                 //if(wtext == txt) 
    232                 //  return; 
    233204                wtext = txt; 
    234             } 
    235              
    236             gtkSetTextCore(txt); 
    237205        } 
    238206        else 
  • trunk/gtk/dfl/form.d

    r8 r92  
    4242        assert(!isHandleCreated); // Make sure the handle wasn't created in createParams(). 
    4343         
    44         wid = gtk_window_new(GtkWindowType.GTK_WINDOW_TOPLEVEL); // ... 
     44        wid = gtk_window_new(GtkWindowType.GTK_WINDOW_TOPLEVEL); 
    4545        if(!wid) 
    4646        { 
     
    5050        auto win = cast(GtkWindow*)wid; 
    5151         
    52         gtk_window_set_default_size(win, 300, 300); // ... 
     52        gtk_window_set_default_size(win, 300, 300); 
    5353         
    5454        postcreateinit(cp); 
     
    6767        char[] result; 
    6868        result = stringFromStringz(gtk_window_get_title(cast(GtkWindow*)wid)); 
    69         if(result.length) 
    70             result = result.dup
    71         return result
     69        if(!result.length) 
     70            return ""
     71        return result.dup
    7272    } 
    7373} 
  • trunk/gtk/dfl/label.d

    r8 r92  
    99import dfl.control, dfl.base, dfl.drawing; 
    1010import dfl.internal.gtk; 
     11 
     12 
     13//version = DFLGTK_LABEL_BOX; 
    1114 
    1215 
     
    2629        with(cp) 
    2730        { 
    28             type = gtk_label_get_type(); 
     31            version(DFLGTK_LABEL_BOX) 
     32            { 
     33                type = gtk_hbox_get_type(); 
     34            } 
     35            else 
     36            { 
     37                type = gtk_label_get_type(); 
     38            } 
    2939        } 
    3040    } 
     
    3343    protected override void gtkSetTextCore(char[] txt) 
    3444    { 
    35         gtk_label_set_text(cast(GtkLabel*)wid, stringToStringz(txt)); 
     45        gtk_label_set_text(cast(GtkLabel*)labelwid, stringToStringz(txt)); 
    3646    } 
    3747     
     
    3949    { 
    4050        char[] result; 
    41         result = stringFromStringz(gtk_label_get_text(cast(GtkLabel*)wid)); 
    42         if(result.length) 
    43             result = result.dup
    44         return result
     51        result = stringFromStringz(gtk_label_get_text(cast(GtkLabel*)labelwid)); 
     52        if(!result.length) 
     53            return ""
     54        return result.dup
    4555    } 
     56     
     57    package override void postcreateinit(inout CreateParams cp) 
     58    { 
     59        version(DFLGTK_LABEL_BOX) 
     60        { 
     61            labelwid = gtk_widget_new(gtk_label_get_type(), null); 
     62            if(!labelwid) 
     63            { 
     64                throw new DflException("Control creation failure"); 
     65            } 
     66        } 
     67         
     68        //gtk_label_set_justify(cast(GtkLabel*)labelwid, GtkJustification.GTK_JUSTIFY_LEFT); 
     69         
     70        //gtk_misc_set_alignment(pmisc, xalign, yalign) 
     71        // 0.5 is centered, 0 is left, 1 is right. 
     72        gtk_misc_set_alignment(cast(GtkMisc*)labelwid, 0.0, 0.0); 
     73         
     74        super.postcreateinit(cp); 
     75         
     76        version(DFLGTK_LABEL_BOX) 
     77        { 
     78            //gtk_container_add(cast(GtkContainer*)wid, labelwid); 
     79            gtk_box_pack_start(cast(GtkBox*)wid, labelwid, false, false, 0); 
     80             
     81            gtk_widget_realize(labelwid); 
     82            gtk_widget_show(labelwid); 
     83        } 
     84    } 
     85     
     86    version(DFLGTK_LABEL_BOX) 
     87    { 
     88        GtkWidget* labelwid; 
     89    } 
     90    else 
     91    { 
     92        alias wid labelwid; 
     93    } 
     94     
    4695} 
    4796