def onCompleted(task): window = Window() stackPanel3 = StackPanel() def onLoaded(sender, args): stackPanel3.Width = Math.Ceiling(stackPanel3.ActualWidth) def onCloseClick(sender, args): window.Close() window.Owner = Application.Current.MainWindow if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): window.Title = "バリデータ" else: window.Title = "Validator" window.WindowStartupLocation = WindowStartupLocation.CenterOwner window.ResizeMode = ResizeMode.NoResize window.SizeToContent = SizeToContent.WidthAndHeight window.Background = SystemColors.ControlBrush window.Loaded += onLoaded stackPanel1 = StackPanel() stackPanel1.UseLayoutRounding = True stackPanel1.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel1.VerticalAlignment = VerticalAlignment.Stretch stackPanel1.Orientation = Orientation.Vertical window.Content = stackPanel1 stackPanel2 = StackPanel() stackPanel2.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel2.VerticalAlignment = VerticalAlignment.Stretch stackPanel2.Orientation = Orientation.Vertical stackPanel2.Background = SystemColors.WindowBrush stackPanel1.Children.Add(stackPanel2) stackPanel3.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel3.VerticalAlignment = VerticalAlignment.Stretch stackPanel3.Orientation = Orientation.Vertical if errorList.Count == 0: if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): attachStackPanel(stackPanel3, Brushes.Lime, "有効なスクリプトです。") else: attachStackPanel(stackPanel3, Brushes.Lime, "Valid.") for warning in warningList: attachStackPanel(stackPanel3, Brushes.Yellow, warning) for error in errorList: attachStackPanel(stackPanel3, Brushes.Red, error) stackPanel2.Children.Add(stackPanel3) solidColorBrush = SolidColorBrush(Colors.White) solidColorBrush.Opacity = 0.5 if solidColorBrush.CanFreeze: solidColorBrush.Freeze() border = Border() border.HorizontalAlignment = HorizontalAlignment.Stretch border.VerticalAlignment = VerticalAlignment.Stretch border.BorderThickness = Thickness(0, 1, 0, 0) border.BorderBrush = solidColorBrush stackPanel1.Children.Add(border) closeButton = Button() closeButton.HorizontalAlignment = HorizontalAlignment.Right closeButton.VerticalAlignment = VerticalAlignment.Center closeButton.Margin = Thickness(10, 10, 10, 10) closeButton.Padding = Thickness(10, 2, 10, 2) closeButton.IsDefault = True if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): closeButton.Content = "閉じる" else: closeButton.Content = "Close" closeButton.Click += onCloseClick border.Child = closeButton window.Show()
def onOpened(s, e): global menuItem menuItem.Items.Clear() def onSignInClick(source, rea): config = None directory = Path.Combine( Environment.GetFolderPath( Environment.SpecialFolder.ApplicationData), Assembly.GetEntryAssembly().GetName().Name) backgroundBrush = None textColor = SystemColors.ControlTextBrush if Directory.Exists(directory): fileName1 = Path.GetFileName(Assembly.GetEntryAssembly().Location) for fileName2 in Directory.EnumerateFiles(directory, "*.config"): if fileName1.Equals( Path.GetFileNameWithoutExtension(fileName2)): exeConfigurationFileMap = ExeConfigurationFileMap() exeConfigurationFileMap.ExeConfigFilename = fileName2 config = ConfigurationManager.OpenMappedExeConfiguration( exeConfigurationFileMap, ConfigurationUserLevel.None) if config is None: config = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None) directory = None if config.AppSettings.Settings["BackgroundImage"] is not None: fileName = config.AppSettings.Settings[ "BackgroundImage"].Value if directory is None else Path.Combine( directory, config.AppSettings.Settings["BackgroundImage"].Value) fs = None bi = BitmapImage() try: fs = FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) bi.BeginInit() bi.StreamSource = fs bi.CacheOption = BitmapCacheOption.OnLoad bi.CreateOptions = BitmapCreateOptions.None bi.EndInit() finally: if fs is not None: fs.Close() backgroundBrush = ImageBrush(bi) backgroundBrush.TileMode = TileMode.Tile backgroundBrush.ViewportUnits = BrushMappingMode.Absolute backgroundBrush.Viewport = Rect(0, 0, bi.Width, bi.Height) backgroundBrush.Stretch = Stretch.None if backgroundBrush.CanFreeze: backgroundBrush.Freeze() if backgroundBrush is None and config.AppSettings.Settings[ "BackgroundColor"] is not None: if config.AppSettings.Settings["BackgroundColor"].Value.Length > 0: backgroundBrush = SolidColorBrush( ColorConverter.ConvertFromString( config.AppSettings.Settings["BackgroundColor"].Value)) if backgroundBrush.CanFreeze: backgroundBrush.Freeze() if config.AppSettings.Settings["TextColor"] is not None: if config.AppSettings.Settings["TextColor"].Value.Length > 0: textColor = ColorConverter.ConvertFromString( config.AppSettings.Settings["TextColor"].Value) textBrush = SolidColorBrush(textColor) if textBrush.CanFreeze: textBrush.Freeze() window = Window() def onClick(source, args): global username, password if not String.IsNullOrEmpty( usernameTextBox.Text) and not String.IsNullOrEmpty( passwordBox.Password): username = usernameTextBox.Text password = passwordBox.Password def onSave(): try: fs = None sr = None sw = None try: fs = FileStream(__file__, FileMode.Open, FileAccess.ReadWrite, FileShare.Read) encoding = UTF8Encoding(False) sr = StreamReader(fs, encoding, True) lines = Regex.Replace( Regex.Replace( sr.ReadToEnd(), "username\\s*=\\s*\"\"", String.Format("username = \"{0}\"", username), RegexOptions.CultureInvariant), "password\\s*=\\s*\"\"", String.Format("password = \"{0}\"", password), RegexOptions.CultureInvariant) fs.SetLength(0) sw = StreamWriter(fs, encoding) sw.Write(lines) finally: if sw is not None: sw.Close() if sr is not None: sr.Close() if fs is not None: fs.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) def onCompleted(task): global menuItem for window in Application.Current.Windows: if window is Application.Current.MainWindow and window.ContextMenu is not None: if window.ContextMenu.Items.Contains(menuItem): window.ContextMenu.Items.Remove(menuItem) window.ContextMenu.Opened -= onOpened if window.ContextMenu.Items[10].GetType( ).IsInstanceOfType(window.ContextMenu.Items[ window.ContextMenu.Items.Count - 4]): window.ContextMenu.Items.RemoveAt(10) menuItem = None Task.Factory.StartNew( onSave, TaskCreationOptions.LongRunning).ContinueWith( onCompleted, TaskScheduler.FromCurrentSynchronizationContext()) window.Close() window.Owner = Application.Current.MainWindow window.Title = Application.Current.MainWindow.Title window.WindowStartupLocation = WindowStartupLocation.CenterScreen window.ResizeMode = ResizeMode.NoResize window.SizeToContent = SizeToContent.WidthAndHeight window.Background = SystemColors.ControlBrush stackPanel1 = StackPanel() stackPanel1.UseLayoutRounding = True stackPanel1.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel1.VerticalAlignment = VerticalAlignment.Stretch stackPanel1.Orientation = Orientation.Vertical window.Content = stackPanel1 stackPanel2 = StackPanel() stackPanel2.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel2.VerticalAlignment = VerticalAlignment.Stretch stackPanel2.Orientation = Orientation.Vertical stackPanel2.Background = SystemColors.ControlBrush if backgroundBrush is None else backgroundBrush stackPanel1.Children.Add(stackPanel2) gradientStopCollection = GradientStopCollection() gradientStopCollection.Add(GradientStop(Color.FromArgb(0, 0, 0, 0), 0)) gradientStopCollection.Add( GradientStop(Color.FromArgb(Byte.MaxValue, 0, 0, 0), 1)) linearGradientBrush = LinearGradientBrush(gradientStopCollection, Point(0.5, 0), Point(0.5, 1)) linearGradientBrush.Opacity = 0.1 if linearGradientBrush.CanFreeze: linearGradientBrush.Freeze() stackPanel3 = StackPanel() stackPanel3.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel3.VerticalAlignment = VerticalAlignment.Stretch stackPanel3.Orientation = Orientation.Vertical stackPanel3.Background = linearGradientBrush stackPanel2.Children.Add(stackPanel3) solidColorBrush1 = SolidColorBrush(Colors.Black) solidColorBrush1.Opacity = 0.25 if solidColorBrush1.CanFreeze: solidColorBrush1.Freeze() border1 = Border() border1.HorizontalAlignment = HorizontalAlignment.Stretch border1.VerticalAlignment = VerticalAlignment.Stretch border1.BorderThickness = Thickness(0, 0, 0, 1) border1.BorderBrush = solidColorBrush1 stackPanel3.Children.Add(border1) stackPanel4 = StackPanel() stackPanel4.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel4.VerticalAlignment = VerticalAlignment.Stretch stackPanel4.Orientation = Orientation.Vertical stackPanel4.Margin = Thickness(10, 10, 10, 20) border1.Child = stackPanel4 stackPanel5 = StackPanel() stackPanel5.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel5.VerticalAlignment = VerticalAlignment.Stretch stackPanel5.Orientation = Orientation.Vertical dropShadowEffect1 = DropShadowEffect() dropShadowEffect1.BlurRadius = 1 dropShadowEffect1.Color = Colors.Black if Math.Max( Math.Max(textColor.R, textColor.G), textColor.B) > Byte.MaxValue / 2 else Colors.White dropShadowEffect1.Direction = 270 dropShadowEffect1.Opacity = 0.5 dropShadowEffect1.ShadowDepth = 1 if dropShadowEffect1.CanFreeze: dropShadowEffect1.Freeze() stackPanel5.Effect = dropShadowEffect1 stackPanel4.Children.Add(stackPanel5) usernameLabel = Label() usernameLabel.Foreground = textBrush if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): usernameLabel.Content = "ユーザ名" else: usernameLabel.Content = "Username" RenderOptions.SetClearTypeHint(usernameLabel, ClearTypeHint.Enabled) stackPanel5.Children.Add(usernameLabel) usernameTextBox = TextBox() usernameTextBox.Width = 240 stackPanel4.Children.Add(usernameTextBox) dropShadowEffect2 = DropShadowEffect() dropShadowEffect2.BlurRadius = 1 dropShadowEffect2.Color = Colors.Black if Math.Max( Math.Max(textColor.R, textColor.G), textColor.B) > Byte.MaxValue / 2 else Colors.White dropShadowEffect2.Direction = 270 dropShadowEffect2.Opacity = 0.5 dropShadowEffect2.ShadowDepth = 1 if dropShadowEffect2.CanFreeze: dropShadowEffect2.Freeze() stackPanel6 = StackPanel() stackPanel6.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel6.VerticalAlignment = VerticalAlignment.Stretch stackPanel6.Orientation = Orientation.Vertical stackPanel6.Effect = dropShadowEffect2 stackPanel4.Children.Add(stackPanel6) passwordLabel = Label() passwordLabel.Foreground = textBrush if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): passwordLabel.Content = "パスワード" else: passwordLabel.Content = "Password" RenderOptions.SetClearTypeHint(passwordLabel, ClearTypeHint.Enabled) stackPanel6.Children.Add(passwordLabel) passwordBox = PasswordBox() passwordBox.Width = 240 stackPanel4.Children.Add(passwordBox) solidColorBrush2 = SolidColorBrush(Colors.White) solidColorBrush2.Opacity = 0.5 if solidColorBrush2.CanFreeze: solidColorBrush2.Freeze() border2 = Border() border2.HorizontalAlignment = HorizontalAlignment.Stretch border2.VerticalAlignment = VerticalAlignment.Stretch border2.BorderThickness = Thickness(0, 1, 0, 0) border2.BorderBrush = solidColorBrush2 stackPanel1.Children.Add(border2) signInButton = Button() signInButton.HorizontalAlignment = HorizontalAlignment.Right signInButton.VerticalAlignment = VerticalAlignment.Center signInButton.Margin = Thickness(10, 10, 10, 10) signInButton.Padding = Thickness(10, 2, 10, 2) signInButton.IsDefault = True if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): signInButton.Content = "サインイン" else: signInButton.Content = "Sign in" signInButton.Click += onClick border2.Child = signInButton usernameTextBox.Focus() window.Show()
def onOpened(s, e): global appId, appSecret, accessToken, menuItem menuItem.Items.Clear() if accessToken is None: def onLogInClick(source, rea): window = Window() webBrowser = WebBrowser() def onWebBrowserNavigated(sender, nea): if Regex.IsMatch(nea.Uri.AbsoluteUri, "^http(s)?://www\\.facebook\\.com/connect/login_success\\.html", RegexOptions.CultureInvariant): for match in Regex.Matches(nea.Uri.Query, "\\??(?<1>.+?)=(?<2>.*?)(?:&|$)", RegexOptions.CultureInvariant | RegexOptions.Singleline): if match.Groups[1].Value.Equals("code"): sb = StringBuilder() d = Dictionary[String, String]() d.Add("client_id", appId) d.Add("redirect_uri", "https://www.facebook.com/connect/login_success.html") d.Add("client_secret", appSecret) d.Add("code", match.Groups[2].Value) for kvp in d: if sb.Length > 0: sb.Append('&') sb.AppendFormat("{0}={1}", kvp.Key, urlEncode(kvp.Value)) request = WebRequest.Create(String.Concat("https://graph.facebook.com/oauth/access_token?", sb.ToString())) dictionary = Dictionary[String, String]() def onAuth(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None streamReader = None shortLivedAccessToken = None try: response = request.GetResponse() stream = response.GetResponseStream() streamReader = StreamReader(stream) for m in Regex.Matches(streamReader.ReadToEnd(), "(?<1>.+?)=(?<2>.*?)(?:&|$)", RegexOptions.CultureInvariant | RegexOptions.Singleline): if m.Groups[1].Value.Equals("access_token"): shortLivedAccessToken = m.Groups[2].Value finally: if streamReader is not None: streamReader.Close() streamReader = None if stream is not None: stream.Close() stream = None if response is not None: response.Close() response = None if shortLivedAccessToken is not None: d.Remove("redirect_uri") d.Remove("code") d.Add("grant_type", "fb_exchange_token") d.Add("fb_exchange_token", shortLivedAccessToken) sb.Clear() for kvp in d: if sb.Length > 0: sb.Append('&') sb.AppendFormat("{0}={1}", kvp.Key, urlEncode(kvp.Value)) r = WebRequest.Create(String.Concat("https://graph.facebook.com/oauth/access_token?", sb.ToString())) try: response = r.GetResponse() stream = response.GetResponseStream() streamReader = StreamReader(stream) for m in Regex.Matches(streamReader.ReadToEnd(), "(?<1>.+?)=(?<2>.*?)(?:&|$)", RegexOptions.CultureInvariant | RegexOptions.Singleline): if not dictionary.ContainsKey(m.Groups[1].Value): dictionary.Add(m.Groups[1].Value, m.Groups[2].Value) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() if response is not None: response.Close() if dictionary.ContainsKey("access_token"): fs = None sr = None sw = None try: fs = FileStream(__file__, FileMode.Open, FileAccess.ReadWrite, FileShare.Read) encoding = UTF8Encoding(False) sr = StreamReader(fs, encoding, True) lines = Regex.Replace(sr.ReadToEnd(), String.Concat("(?<=", Environment.NewLine, "accessToken\\s*=\\s*(?(?=\")(?<Open>\")|(?<Open>\")?))\\S*?(?=(?(?<=\")(?<Close-Open>\")|(?<Close-Open>\")?)", Environment.NewLine, "(?(Open)(?!))(?!\"))"), MatchEvaluator(lambda x: dictionary["access_token"] if x.Groups["Close"].Success else String.Format("\"{0}\"", dictionary["access_token"])), RegexOptions.CultureInvariant) fs.SetLength(0) sw = StreamWriter(fs, encoding) sw.Write(lines) finally: if sw is not None: sw.Close() if sr is not None: sr.Close() if fs is not None: fs.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) def onCompleted(task): global accessToken if dictionary.ContainsKey("access_token"): accessToken = dictionary["access_token"] Task.Factory.StartNew(onAuth, TaskCreationOptions.LongRunning).ContinueWith(onCompleted, TaskScheduler.FromCurrentSynchronizationContext()) break def onWindowLoaded(sender, args): sb = StringBuilder() d = Dictionary[String, String]() d.Add("client_id", appId) d.Add("redirect_uri", "https://www.facebook.com/connect/login_success.html") d.Add("scope", "read_stream, publish_stream") d.Add("display", "popup") for kvp in d: if sb.Length > 0: sb.Append('&') sb.AppendFormat("{0}={1}", kvp.Key, urlEncode(kvp.Value)) webBrowser.Navigate(Uri(String.Concat("https://www.facebook.com/dialog/oauth?", sb.ToString()))) def onCloseClick(source, args): window.Close() window.Owner = Application.Current.MainWindow window.Title = Application.Current.MainWindow.Title window.WindowStartupLocation = WindowStartupLocation.CenterScreen window.ResizeMode = ResizeMode.NoResize window.SizeToContent = SizeToContent.WidthAndHeight window.Background = SystemColors.ControlBrush window.Loaded += onWindowLoaded stackPanel = StackPanel() stackPanel.UseLayoutRounding = True stackPanel.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel.VerticalAlignment = VerticalAlignment.Stretch stackPanel.Orientation = Orientation.Vertical window.Content = stackPanel solidColorBrush1 = SolidColorBrush(Colors.Black) solidColorBrush1.Opacity = 0.25 if solidColorBrush1.CanFreeze: solidColorBrush1.Freeze() border1 = Border() border1.HorizontalAlignment = HorizontalAlignment.Stretch border1.VerticalAlignment = VerticalAlignment.Stretch border1.BorderThickness = Thickness(0, 0, 0, 1) border1.BorderBrush = solidColorBrush1 stackPanel.Children.Add(border1) webBrowser.HorizontalAlignment = HorizontalAlignment.Stretch webBrowser.VerticalAlignment = VerticalAlignment.Stretch webBrowser.Width = 640 webBrowser.Height = 480 webBrowser.Navigated += onWebBrowserNavigated border1.Child = webBrowser solidColorBrush2 = SolidColorBrush(Colors.White) solidColorBrush2.Opacity = 0.5 if solidColorBrush2.CanFreeze: solidColorBrush2.Freeze() border2 = Border() border2.HorizontalAlignment = HorizontalAlignment.Stretch border2.VerticalAlignment = VerticalAlignment.Stretch border2.BorderThickness = Thickness(0, 1, 0, 0) border2.BorderBrush = solidColorBrush2 stackPanel.Children.Add(border2) closeButton = Button() closeButton.HorizontalAlignment = HorizontalAlignment.Right closeButton.VerticalAlignment = VerticalAlignment.Center closeButton.Margin = Thickness(10, 10, 10, 10) closeButton.Padding = Thickness(10, 2, 10, 2) closeButton.IsDefault = True if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): closeButton.Content = "閉じる" else: closeButton.Content = "Close" closeButton.Click += onCloseClick border2.Child = closeButton window.Show() logInMenuItem = MenuItem() if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): logInMenuItem.Header = "ログイン..." else: logInMenuItem.Header = "Log In..." logInMenuItem.Click += onLogInClick menuItem.Items.Add(logInMenuItem)
if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): openFileDialog.Filter = "画像ファイル (*.jpg;*.jpeg;*.png)|*.jpg;*.jpeg;*.png" else: openFileDialog.Filter = "Image files (*.jpg;*.jpeg;*.png)|*.jpg;*.jpeg;*.png" if openFileDialog.ShowDialog() == True: fileName = openFileDialog.FileName Directory.SetCurrentDirectory(currentDirectory) post(comboBox.Text, fileName) postButton = Button() postButton.Margin = Thickness(10, 0, 0, 0) postButton.Padding = Thickness(5, 0, 5, 0) postButton.IsDefault = True if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): checkBox.Content = "画像を添付" postButton.Content = "投稿" else: checkBox.Content = "Attach" postButton.Content = "Post" postButton.Click += onPostClick stackPanel.Children.Add(comboBox) stackPanel.Children.Add(checkBox) stackPanel.Children.Add(postButton)
def onOpened(s, e): global menuItem menuItem.Items.Clear() def onSignInClick(source, rea): config = None directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Assembly.GetEntryAssembly().GetName().Name) backgroundBrush = None textColor = SystemColors.ControlTextBrush if Directory.Exists(directory): fileName1 = Path.GetFileName(Assembly.GetEntryAssembly().Location) for fileName2 in Directory.EnumerateFiles(directory, "*.config"): if fileName1.Equals(Path.GetFileNameWithoutExtension(fileName2)): exeConfigurationFileMap = ExeConfigurationFileMap() exeConfigurationFileMap.ExeConfigFilename = fileName2 config = ConfigurationManager.OpenMappedExeConfiguration(exeConfigurationFileMap, ConfigurationUserLevel.None) if config is None: config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) directory = None if config.AppSettings.Settings["BackgroundImage"] is not None: fileName = config.AppSettings.Settings["BackgroundImage"].Value if directory is None else Path.Combine(directory, config.AppSettings.Settings["BackgroundImage"].Value); fs = None bi = BitmapImage() try: fs = FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read) bi.BeginInit() bi.StreamSource = fs bi.CacheOption = BitmapCacheOption.OnLoad bi.CreateOptions = BitmapCreateOptions.None bi.EndInit() finally: if fs is not None: fs.Close() backgroundBrush = ImageBrush(bi) backgroundBrush.TileMode = TileMode.Tile backgroundBrush.ViewportUnits = BrushMappingMode.Absolute backgroundBrush.Viewport = Rect(0, 0, bi.Width, bi.Height) backgroundBrush.Stretch = Stretch.None if backgroundBrush.CanFreeze: backgroundBrush.Freeze() if backgroundBrush is None and config.AppSettings.Settings["BackgroundColor"] is not None: if config.AppSettings.Settings["BackgroundColor"].Value.Length > 0: backgroundBrush = SolidColorBrush(ColorConverter.ConvertFromString(config.AppSettings.Settings["BackgroundColor"].Value)) if backgroundBrush.CanFreeze: backgroundBrush.Freeze() if config.AppSettings.Settings["TextColor"] is not None: if config.AppSettings.Settings["TextColor"].Value.Length > 0: textColor = ColorConverter.ConvertFromString(config.AppSettings.Settings["TextColor"].Value) textBrush = SolidColorBrush(textColor) if textBrush.CanFreeze: textBrush.Freeze() window = Window() def onClick(source, args): global username, password if not String.IsNullOrEmpty(usernameTextBox.Text) and not String.IsNullOrEmpty(passwordBox.Password): username = usernameTextBox.Text password = passwordBox.Password def onSave(): try: fs = None sr = None sw = None try: fs = FileStream(__file__, FileMode.Open, FileAccess.ReadWrite, FileShare.Read) encoding = UTF8Encoding(False) sr = StreamReader(fs, encoding, True) lines = Regex.Replace(Regex.Replace(sr.ReadToEnd(), "username\\s*=\\s*\"\"", String.Format("username = \"{0}\"", username), RegexOptions.CultureInvariant), "password\\s*=\\s*\"\"", String.Format("password = \"{0}\"", password), RegexOptions.CultureInvariant) fs.SetLength(0) sw = StreamWriter(fs, encoding) sw.Write(lines) finally: if sw is not None: sw.Close() if sr is not None: sr.Close() if fs is not None: fs.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) def onCompleted(task): global menuItem for window in Application.Current.Windows: if window is Application.Current.MainWindow and window.ContextMenu is not None: if window.ContextMenu.Items.Contains(menuItem): window.ContextMenu.Items.Remove(menuItem) window.ContextMenu.Opened -= onOpened if window.ContextMenu.Items[10].GetType().IsInstanceOfType(window.ContextMenu.Items[window.ContextMenu.Items.Count - 4]): window.ContextMenu.Items.RemoveAt(10) menuItem = None Task.Factory.StartNew(onSave, TaskCreationOptions.LongRunning).ContinueWith(onCompleted, TaskScheduler.FromCurrentSynchronizationContext()) window.Close() window.Owner = Application.Current.MainWindow window.Title = Application.Current.MainWindow.Title window.WindowStartupLocation = WindowStartupLocation.CenterScreen window.ResizeMode = ResizeMode.NoResize window.SizeToContent = SizeToContent.WidthAndHeight window.Background = SystemColors.ControlBrush stackPanel1 = StackPanel() stackPanel1.UseLayoutRounding = True stackPanel1.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel1.VerticalAlignment = VerticalAlignment.Stretch stackPanel1.Orientation = Orientation.Vertical window.Content = stackPanel1 stackPanel2 = StackPanel() stackPanel2.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel2.VerticalAlignment = VerticalAlignment.Stretch stackPanel2.Orientation = Orientation.Vertical stackPanel2.Background = SystemColors.ControlBrush if backgroundBrush is None else backgroundBrush stackPanel1.Children.Add(stackPanel2) gradientStopCollection = GradientStopCollection() gradientStopCollection.Add(GradientStop(Color.FromArgb(0, 0, 0, 0), 0)) gradientStopCollection.Add(GradientStop(Color.FromArgb(Byte.MaxValue, 0, 0, 0), 1)) linearGradientBrush = LinearGradientBrush(gradientStopCollection, Point(0.5, 0), Point(0.5, 1)) linearGradientBrush.Opacity = 0.1 if linearGradientBrush.CanFreeze: linearGradientBrush.Freeze() stackPanel3 = StackPanel() stackPanel3.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel3.VerticalAlignment = VerticalAlignment.Stretch stackPanel3.Orientation = Orientation.Vertical stackPanel3.Background = linearGradientBrush stackPanel2.Children.Add(stackPanel3) solidColorBrush1 = SolidColorBrush(Colors.Black) solidColorBrush1.Opacity = 0.25 if solidColorBrush1.CanFreeze: solidColorBrush1.Freeze() border1 = Border() border1.HorizontalAlignment = HorizontalAlignment.Stretch border1.VerticalAlignment = VerticalAlignment.Stretch border1.BorderThickness = Thickness(0, 0, 0, 1) border1.BorderBrush = solidColorBrush1 stackPanel3.Children.Add(border1) stackPanel4 = StackPanel() stackPanel4.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel4.VerticalAlignment = VerticalAlignment.Stretch stackPanel4.Orientation = Orientation.Vertical stackPanel4.Margin = Thickness(10, 10, 10, 20) border1.Child = stackPanel4 stackPanel5 = StackPanel() stackPanel5.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel5.VerticalAlignment = VerticalAlignment.Stretch stackPanel5.Orientation = Orientation.Vertical dropShadowEffect1 = DropShadowEffect() dropShadowEffect1.BlurRadius = 1 dropShadowEffect1.Color = Colors.Black if Math.Max(Math.Max(textColor.R, textColor.G), textColor.B) > Byte.MaxValue / 2 else Colors.White; dropShadowEffect1.Direction = 270 dropShadowEffect1.Opacity = 0.5 dropShadowEffect1.ShadowDepth = 1 if dropShadowEffect1.CanFreeze: dropShadowEffect1.Freeze() stackPanel5.Effect = dropShadowEffect1 stackPanel4.Children.Add(stackPanel5) usernameLabel = Label() usernameLabel.Foreground = textBrush if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): usernameLabel.Content = "ユーザ名" else: usernameLabel.Content = "Username" RenderOptions.SetClearTypeHint(usernameLabel, ClearTypeHint.Enabled) stackPanel5.Children.Add(usernameLabel) usernameTextBox = TextBox() usernameTextBox.Width = 240 stackPanel4.Children.Add(usernameTextBox) dropShadowEffect2 = DropShadowEffect() dropShadowEffect2.BlurRadius = 1 dropShadowEffect2.Color = Colors.Black if Math.Max(Math.Max(textColor.R, textColor.G), textColor.B) > Byte.MaxValue / 2 else Colors.White; dropShadowEffect2.Direction = 270 dropShadowEffect2.Opacity = 0.5 dropShadowEffect2.ShadowDepth = 1 if dropShadowEffect2.CanFreeze: dropShadowEffect2.Freeze() stackPanel6 = StackPanel() stackPanel6.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel6.VerticalAlignment = VerticalAlignment.Stretch stackPanel6.Orientation = Orientation.Vertical stackPanel6.Effect = dropShadowEffect2 stackPanel4.Children.Add(stackPanel6) passwordLabel = Label() passwordLabel.Foreground = textBrush if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): passwordLabel.Content = "パスワード" else: passwordLabel.Content = "Password" RenderOptions.SetClearTypeHint(passwordLabel, ClearTypeHint.Enabled) stackPanel6.Children.Add(passwordLabel) passwordBox = PasswordBox() passwordBox.Width = 240 stackPanel4.Children.Add(passwordBox) solidColorBrush2 = SolidColorBrush(Colors.White) solidColorBrush2.Opacity = 0.5 if solidColorBrush2.CanFreeze: solidColorBrush2.Freeze() border2 = Border() border2.HorizontalAlignment = HorizontalAlignment.Stretch border2.VerticalAlignment = VerticalAlignment.Stretch border2.BorderThickness = Thickness(0, 1, 0, 0) border2.BorderBrush = solidColorBrush2 stackPanel1.Children.Add(border2) signInButton = Button() signInButton.HorizontalAlignment = HorizontalAlignment.Right signInButton.VerticalAlignment = VerticalAlignment.Center signInButton.Margin = Thickness(10, 10, 10, 10) signInButton.Padding = Thickness(10, 2, 10, 2) signInButton.IsDefault = True if CultureInfo.CurrentCulture.Equals(CultureInfo.GetCultureInfo("ja-JP")): signInButton.Content = "サインイン" else: signInButton.Content = "Sign in" signInButton.Click += onClick border2.Child = signInButton usernameTextBox.Focus() window.Show()
def onCompleted(task): window = Window() stackPanel3 = StackPanel() def onLoaded(sender, args): stackPanel3.Width = Math.Ceiling(stackPanel3.ActualWidth) def onCloseClick(sender, args): window.Close() window.Owner = Application.Current.MainWindow if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): window.Title = "バリデータ" else: window.Title = "Validator" window.WindowStartupLocation = WindowStartupLocation.CenterOwner window.ResizeMode = ResizeMode.NoResize window.SizeToContent = SizeToContent.WidthAndHeight window.Background = SystemColors.ControlBrush window.Loaded += onLoaded stackPanel1 = StackPanel() stackPanel1.UseLayoutRounding = True stackPanel1.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel1.VerticalAlignment = VerticalAlignment.Stretch stackPanel1.Orientation = Orientation.Vertical window.Content = stackPanel1 stackPanel2 = StackPanel() stackPanel2.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel2.VerticalAlignment = VerticalAlignment.Stretch stackPanel2.Orientation = Orientation.Vertical stackPanel2.Background = SystemColors.WindowBrush stackPanel1.Children.Add(stackPanel2) stackPanel3.HorizontalAlignment = HorizontalAlignment.Stretch stackPanel3.VerticalAlignment = VerticalAlignment.Stretch stackPanel3.Orientation = Orientation.Vertical if errorList.Count == 0: if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): attachStackPanel(stackPanel3, Brushes.Lime, "有効なスクリプトです。") else: attachStackPanel(stackPanel3, Brushes.Lime, "Valid.") for warning in warningList: attachStackPanel(stackPanel3, Brushes.Yellow, warning) for error in errorList: attachStackPanel(stackPanel3, Brushes.Red, error) stackPanel2.Children.Add(stackPanel3) solidColorBrush = SolidColorBrush(Colors.White) solidColorBrush.Opacity = 0.5 if solidColorBrush.CanFreeze: solidColorBrush.Freeze() border = Border() border.HorizontalAlignment = HorizontalAlignment.Stretch border.VerticalAlignment = VerticalAlignment.Stretch border.BorderThickness = Thickness(0, 1, 0, 0) border.BorderBrush = solidColorBrush stackPanel1.Children.Add(border) closeButton = Button() closeButton.HorizontalAlignment = HorizontalAlignment.Right closeButton.VerticalAlignment = VerticalAlignment.Center closeButton.Margin = Thickness(10, 10, 10, 10) closeButton.Padding = Thickness(10, 2, 10, 2) closeButton.IsDefault = True if CultureInfo.CurrentCulture.Equals( CultureInfo.GetCultureInfo("ja-JP")): closeButton.Content = "閉じる" else: closeButton.Content = "Close" closeButton.Click += onCloseClick border.Child = closeButton window.Show()