<html>
  <head>
      </head>
  <body style="line-height: normal; margin-top: 4px; font-variant: normal; margin-bottom: 1px; margin-left: 4px; margin-right: 4px">
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">Hello Everyone,</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">This is my first day on the mailing list, and as it is I have a question regarding some odd behavior I am encountering. I have also posted this message to the GTK# list as I am not sure which is the more appropriate venue.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">I am writing an application on OS X 10.8 using C#, Mono 2.10.9 and MonoDevelop 3.0.4 (including the Designer views) that makes some simple changes to LDAP. As part of it, I decided to get fancy with GTK#. All is going well, except for one behavior.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">I have created a window class to display a progress bar and stop button. I have further created a function in this class to update the progress bar with a fraction and text message. In my code, I create a new instance of this window class when real work is happening in another class, and then populate it after every ten iterations of a foreach loop.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">My problem is that when the window is created FROM THE CLASS DOING REAL WORK, it displays neither the progress bar widget, nor the button. It displays only the window title and then white space below. Only this window displays this behavior -- several other windows that I create over the course of the application all display appropriately.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">If I instead create the progress bar window in Main.cs and call Show(), it will display just fine. I can even call the function to set its status from Main.cs and it will display correctly.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">I have tried creating the window in Main.cs and passing it to the class that does the real work later. I have tried creating it in other classes besides the one that does the work. In all cases the behavior is the same -- if the window is created and used solely in Main.cs it will display fine, but if it it ever invoked or created from anywhere else (whether or not it is created in another class or in Main.cs) it will display incorrectly. </font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">I have taken to using the debugger and break points to isolate the behavior. If I set a breakpoint immediately after the window is created, it is still blank -- that is, I do not think it is a case that the window is just not keeping pace with any updates I am sending. I have also compared the various values of the window objects and attributes when it is displayed (created and used solely in Main.cs) and when it is not (displayed in any other class) and they seem to be identical.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">So, I am at a loss, and I would appreciate any advice you might give.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">I can send any code you think would prove useful, but for now I am sending you the class where I am trying to call the window, and the contents of the window's code-behind.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">Thank you for any guidance you can give.</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">Johnnie Odom</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">Network Services</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">School District of Escambia County</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font face="Lucida Grande" size="3">****************</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
      <SPAN STYLE='FONT-FAMILY:"Tahoma,sans-serif" ;FONT-SIZE:"13px" ;COLOR:"rgb(0, 0, 0)"'><span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); font-weight: normal; line-height: normal; font-family: Tahoma,sans-serif; letter-spacing: normal; white-space: normal; font-variant: normal; font-style: normal; text-align: start; text-transform: none; font-size: 13px; text-indent: 0px; float: none; word-spacing: 0px; display: inline ! important" charset="utf-8">The function from the calling class:</span></SPAN><br><br>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">public string radiazerMain(string radiazerGroup, string radiazerProfile){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">Progression MarathonBar = new Progression();</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">MarathonBar.Show();</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">string monologger = "";</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">string lastLine = "Radiazer completed current run." + Environment.NewLine;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">Array usersToModify = getGroupMembers(radiazerGroup);</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">string[] radiusAttribs = new string[]{"dialupAccess","radiusArapFeatures","radiusArapSecurity","radiusArapZoneAccess","radiusAuthType","radiusCallbackId","radiusCallbackNumber","radiusCalledStationId","radiusCallingStationId","radiusCheckItem","radiusClass","radiusClientIPAddress","radiusExpiration","radiusFilterId","radiusFramedAppleTalkLink","radiusFramedAppleTalkNetwork","radiusFramedAppleTalkZone","radiusFramedCompression","radiusFramedIPAddress","radiusFramedIPNetmask","radiusFramedIPXNetwork","radiusFramedMTU","radiusFramedProtocol","radiusFramedRoute","radiusFramedRouting","radiusGroupName","radiusHint","radiusHuntgroupName","radiusIdleTimeout","radiusLoginIPHost","radiusLoginLATGroup","radiusLoginLATNode","radiusLoginLATPort","radiusLoginLATService","radiusLoginService","radiusLoginTCPPort","radiusLoginTime","radiusPasswordRetry","radiusPortLimit","radiusProfileDn","radiusPrompt","radiusProxyToRealm","radiusRealm","radiusReplicateToRealm","radiusReplyItem","radiusServiceType","radiusSessionTimeout","radiusSimultaneousUse","radiusStripUserName","radiusTerminationAction","radiusTunnelAssignmentId","radiusTunnelClientEndpoint","radiusTunnelMediumType","radiusTunnelPassword","radiusTunnelPreference","radiusTunnelPrivateGroupId","radiusTunnelServerEndpoint","radiusTunnelType","radiusUserCategory","radiusVSA"};</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">LdapAttributeSet profileTemplate = LdapAttributeSetFiltered(radiazerProfile, radiusAttribs);</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">profileTemplate.Add(new LdapAttribute("radiusProfileDn", radiazerProfile));</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">int totalUsersCount = usersToModify.Length;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">int currentUserCount = 0;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">int errorCount = 0;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">MarathonBar.Show();</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">foreach(string userToModify in usersToModify){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">currentUserCount++;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">try{</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">monologger = monologger + radiazeModifyUser(userToModify, profileTemplate);</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">catch(LdapException LdapFailure){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">monologger = monologger + "User " + userToModify + " failed. Error is " + LdapFailure.ToString() + Environment.NewLine;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">errorCount++;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">if(((currentUserCount % 10) == 0) || ((totalUsersCount - currentUserCount) < 10)){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">MarathonBar.setProgress(((double)currentUserCount / totalUsersCount), totalUsersCount , currentUserCount, errorCount, userToModify);</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">if(MarathonBar.cancelFromUser){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">lastLine = "Radiazer cancelled by user." + Environment.NewLine;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">break;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">MarathonBar.Destroy();</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">monologger = monologger + lastLine;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">return monologger;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">*************</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">The Code-Behind:</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">using System;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">namespace Radiazer2</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">{</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">public partial class Progression : Gtk.Window</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">{</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">public bool cancelFromUser = false;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">public Progression () : </font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">base(Gtk.WindowType.Toplevel)</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">{</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">this.Build ();</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">public void setProgress(double fractionOfProgress, int totalUnits, int finishedUnits, int errorUnits, string finishedUser){</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">this.progressIndicator.Fraction = fractionOfProgress;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">this.progressIndicator.Text = "Completed " + finishedUnits + " of " + totalUnits + " with " + errorUnits + " errors. Current user is " + finishedUser + ".";</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <br>
          </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">protected void OnStopUserClicked (object sender, EventArgs e)</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">{</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">cancelFromUser = true;</font>    </p>
    <p style="margin-top: 0; margin-bottom: 0">
      <font size="3" face="Lucida Grande">}</font>
    </p>
  </body>
</html>